Vous avez cité la réponse :
Les tampons de sortie peuvent être explicitement vidés pour forcer l'écriture du tampon.
C'est-à-dire que vous pouvez avoir besoin de "flush" la sortie pour qu'elle soit écrite dans le flux sous-jacent (qui peut être un fichier, ou dans les exemples cités, un terminal).
En général, stdout/cout est un tampon de ligne : la sortie n'est pas envoyée au système d'exploitation tant que vous n'avez pas écrit une nouvelle ligne ou explicitement vidé le tampon. L'avantage est que quelque chose comme std::cout << "Mouse moved (" << p.x << ", " << p.y << ")" << endl
n'entraîne qu'une seule écriture dans le "fichier" sous-jacent au lieu de six, ce qui est bien meilleur pour les performances. L'inconvénient est qu'un code comme :
for (int i = 0; i < 5; i++) {
std::cout << ".";
sleep(1); // or something similar
}
std::cout << "\n";
produira .....
à la fois (pour des sleep
la mise en œuvre, voir cette question ). Dans ce cas, vous voudrez disposer d'un << std::flush
pour s'assurer que la sortie s'affiche.
Lecture cin
chasse d'eau cout
donc vous n'avez pas besoin d'un flush explicite pour le faire :
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;