Thực tế cho ví dụ cụ thể của bạn, bạn nên hỏi cái nào là thích hợp hơn, đặt hoặc cout. printf in văn bản được định dạng nhưng bạn chỉ cần xuất văn bản thuần túy vào bảng điều khiển.
Để sử dụng chung, luồng (iostream, trong đó cout là một phần) có thể mở rộng hơn (bạn có thể in các loại của riêng mình), và chung chung hơn ở đó bạn có thể tạo các chức năng để in cho bất kỳ loại luồng nào , không chỉ bàn điều khiển (hoặc đầu ra được chuyển hướng). Bạn có thể tạo hành vi dòng chung chung với printf quá sử dụng fprintf mà lấy một FILE * như một FILE * thường không phải là một tập tin thực sự, nhưng điều này là khó khăn hơn.
Luồng đang "an toàn" khi bạn quá tải với loại bạn đang in. printf không an toàn với việc sử dụng dấu ba chấm để bạn có thể nhận được kết quả không xác định nếu bạn đặt các kiểu tham số sai trong đó không khớp với chuỗi định dạng, nhưng trình biên dịch sẽ không phàn nàn. Bạn thậm chí có thể nhận được một hành vi seg-fault/undefined (nhưng bạn có thể với cout nếu được sử dụng không chính xác) nếu bạn bỏ lỡ một tham số hoặc vượt qua trong một xấu (ví dụ như một số cho% s và nó xử lý nó như một con trỏ anyway).
printf có một số lợi thế: bạn có thể tạo chuỗi định dạng rồi sử dụng lại chuỗi định dạng cho dữ liệu khác nhau, ngay cả khi dữ liệu đó không có cấu trúc và sử dụng thao tác định dạng cho một biến không "gắn" định dạng đó để sử dụng thêm vì bạn chỉ định định dạng cho mỗi biến. printf còn được gọi là threadsafe trong khi cout thực sự thì không.
tăng cường đã kết hợp những lợi thế của từng loại với thư viện định dạng tăng ::.
Nếu bạn đang viết mã C++ thì bạn nên nói chung thích các thành ngữ và thư viện C++. –
Nó phụ thuộc vào ngôn ngữ nào bạn đang viết chương trình của bạn hoặc C hoặc C++. Cả hai phương pháp này đều có ngôn ngữ khác nhau, do đó bạn không thể so sánh trực tiếp. –
@Paul R. Cảm ơn bạn đã trả lời. Vì vậy, không phải là "printf()" sau đó được coi là một thành ngữ C++? –