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 << ")" << endlmenyebabkan 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 sleepimplementasi yang tepat , lihat pertanyaan ini ). Dalam kasus seperti itu, Anda akan menginginkan tambahan << std::flushuntuk memastikan bahwa output ditampilkan.
Membaca cinflushes coutsehingga Anda tidak memerlukan flush eksplisit untuk melakukan ini:
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;