Anda telah mengutip jawabannya:
Buffer keluaran dapat secara eksplisit dibilas untuk memaksa buffer ditulis.
Artinya, Anda mungkin perlu "mengosongkan" keluaran agar dapat ditulis ke aliran yang mendasarinya (yang mungkin berupa file, atau dalam contoh yang terdaftar, terminal).
Umumnya, stdout / cout adalah baris-buffer: keluaran tidak dikirim ke OS sampai Anda menulis baris baru atau secara eksplisit membersihkan buffer. Keuntungannya adalah sesuatu seperti std::cout << "Mouse moved (" << p.x << ", " << p.y << ")" << endl
menyebabkan hanya satu penulisan ke "file" yang mendasarinya, bukan enam, yang jauh lebih baik untuk kinerja. Kerugiannya adalah kode seperti:
for (int i = 0; i < 5; i++) {
std::cout << ".";
sleep(1); // or something similar
}
std::cout << "\n";
akan mengeluarkan .....
sekaligus (untuk sleep
implementasi yang tepat , lihat pertanyaan ini ). Dalam kasus seperti itu, Anda akan menginginkan tambahan << std::flush
untuk memastikan bahwa output ditampilkan.
Membaca cin
flushes cout
sehingga Anda tidak memerlukan flush eksplisit untuk melakukan ini:
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;