Ich habe ein wirklich einfaches Programm, das Zeilen mit cout druckt und nach jeder Zeile schläft. Alles ist gut und gut für etwa 7 Iterationen, da der Puffer an keinem Punkt deutlich gespült wird. Danach nehme ich an, dass nur ein Teil des Puffers bei jeder Iteration gelöscht wird.Ich verstehe nicht, gepufferte Ausgabe und cout
Ich habe ein paar Fragen zu diesem Verhalten:
- Wenn der Puffer angeblich groß genug ist, paßt ~ 7 Zeilen der Ausgabe, warum wird der Puffer eine Zeile zu einem Zeitpunkt gespült?
- Wenn dieser Puffer tatsächlich auf diese Weise gespült wird, was ist dann der Vorteil? Warum wird nicht der ganze Puffer auf einmal gespült?
Ist es nur ein Zufall, dass genau die gleiche Anzahl von Zeichen wie meine Zeilenlänge in die Ausgabe geschrieben wird, oder wird der Cout-Puffer basierend auf Zeilenendezeichen wie '\ n' 'intern gelöscht?
int main(){ for(int i = 0; i < 100; ++i){ std::cout << "This is line " << i << '\n'; Sleep(1000); } return 0; }
Es druckt etwa jede Sekunde, wie Sie es erwartet haben, für mich, mit oder ohne '\ n'. –