Bạn đã trích dẫn câu trả lời:
Bộ đệm đầu ra có thể được xóa một cách rõ ràng để buộc ghi bộ đệm.
Có nghĩa là, bạn có thể cần phải "xả" đầu ra để ghi nó vào luồng bên dưới (có thể là một tệp hoặc trong các ví dụ được liệt kê, một thiết bị đầu cuối).
Nói chung, stdout / cout là dòng đệm: đầu ra không được gửi đến HĐH cho đến khi bạn viết một dòng mới hoặc xóa bộ đệm một cách rõ ràng. Ưu điểm là một cái gì đó như std::cout << "Mouse moved (" << p.x << ", " << p.y << ")" << endl
chỉ gây ra một lần ghi vào "tệp" bên dưới thay vì sáu lần, điều này tốt hơn nhiều cho hiệu suất. Điểm bất lợi là một mã như:
for (int i = 0; i < 5; i++) {
std::cout << ".";
sleep(1); // or something similar
}
std::cout << "\n";
sẽ xuất ra .....
cùng một lúc (để sleep
thực hiện chính xác , hãy xem câu hỏi này ). Trong những trường hợp như vậy, bạn sẽ muốn một phần bổ sung << std::flush
để đảm bảo rằng đầu ra được hiển thị.
Đọc cin
bừng cout
vì vậy bạn không cần một tuôn ra rõ ràng để làm điều này:
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;