Heim > Artikel > Backend-Entwicklung > Können Sie die Standardausgabe (stdout) und den Standardfehler (stderr) in eine Zeichenfolge in C umleiten?
stdout/stderr in einen String umleiten
Viele Diskussionen drehten sich um die Umleitung von stdout/stderr in eine Datei. Ist es jedoch möglich, diese Ausgabe in einen String umzuleiten?
Lösung
Ja, eine Umleitung auf ein std::stringstream-Objekt ist möglich:
<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>
Um ein automatisches Zurücksetzen des Puffers sicherzustellen, sollten Sie die Verwendung einer Schutzklasse in Betracht ziehen:
<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>
Das obige ist der detaillierte Inhalt vonKönnen Sie die Standardausgabe (stdout) und den Standardfehler (stderr) in eine Zeichenfolge in C umleiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!