Heim >Backend-Entwicklung >C++ >Wie erfasst man Standardausgabe- und Fehlerströme in einem String in C?
So leiten Sie die Ausgabe in einen String in C um
Für verschiedene Debugging- und Testszenarien kann es praktisch sein, die Standardausgabe umzuleiten Fehlerströme werden an einen String und nicht an die Konsole gesendet.
Lösung: Verwenden von std::stringstream
Um stdout/stderr auf einen String umzuleiten, können Sie std verwenden ::stringstream class:
<code class="cpp">std::stringstream buffer; std::streambuf *old = std::cout.rdbuf(buffer.rdbuf()); std::cout << "Bla" << std::endl; std::string text = buffer.str(); // text will now contain "Bla\n"</code>
Guard Class for Buffer Reset
Um sicherzustellen, dass der Puffer nach der Umleitung zurückgesetzt wird, können Sie eine Guard-Klasse erstellen:
<code class="cpp">struct cout_redirect { cout_redirect(std::streambuf *new_buffer) : old(std::cout.rdbuf(new_buffer)) {} ~cout_redirect() { std::cout.rdbuf(old); } private: std::streambuf *old; };</code>
Diese Schutzklasse garantiert, dass der Puffer auch im Ausnahmefall immer in seinen ursprünglichen Zustand zurückversetzt wird.
Das obige ist der detaillierte Inhalt vonWie erfasst man Standardausgabe- und Fehlerströme in einem String in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!