Heim >Backend-Entwicklung >C++ >Wie stellt man mit „std::flush' eine sofortige Ausgabe in C sicher?

Wie stellt man mit „std::flush' eine sofortige Ausgabe in C sicher?

DDD
DDDOriginal
2024-11-02 21:04:02946Durchsuche

How to Ensure Immediate Output in C   Using `std::flush`?

Erzwingen der sofortigen Ausgabe in C mit std::flush

In C-Programmen kommt es häufig vor, dass ein Szenario auftritt, in dem Text in das gedruckt wird Der Bildschirm mit std::cout wird nicht sofort angezeigt. Dies kann problematisch sein, insbesondere wenn der Text dem Benutzer Echtzeit-Feedback geben soll, während Berechnungen mit langer Laufzeit ausgeführt werden.

Um dieses Problem zu beheben, betrachten Sie den folgenden Code:

<code class="cpp">std::cout << "Beginning computations...";  // Output 1
computations();
std::cout << " done!\n";                   // Output 2</code>

Ausgabe Nr. 1 informiert den Benutzer darüber, dass Berechnungen im Gange sind, während Ausgabe Nr. 2 deren Abschluss signalisiert. Ausgabe Nr. 1 wird jedoch möglicherweise erst nach der Rückkehr von computations() auf dem Bildschirm angezeigt.

Glücklicherweise gibt es eine einfache Lösung: die Einführung von std::flush. Das Einfügen von std::flush in den Code erzwingt, dass der std::cout-Puffer sofort auf dem Bildschirm ausgegeben wird:

<code class="cpp">std::cout << "Beginning computations..." << std::flush;</code>

Dadurch wird sichergestellt, dass Ausgabe Nr. 1 vor dem Aufruf von computations() angezeigt wird, was dem Benutzer Folgendes anzeigt sofortiges visuelles Feedback.

Alternativ könnte man anstelle von std::cout auch std::cerr verwenden, das in den Standardfehlerstrom schreibt. Standardmäßig leert std::cerr seinen Puffer sofort und löst so das Problem, ohne dass std::flush erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie stellt man mit „std::flush' eine sofortige Ausgabe in C sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn