Heim >Backend-Entwicklung >C++ >Wie leite ich stdout/stderr in einen String in C um?
Umleiten von stdout/stderr zu einem String in C
Obwohl es zahlreiche Diskussionen über das Umleiten von stdout/stderr zu Dateien gibt, ist es auch möglich um diese Ausgaben in einen String umzuleiten. In diesem Artikel wird erläutert, wie Sie dies mit Hilfe von std::stringstream und einer Guard-Klasse erreichen.
Antwort:
Um stdout/stderr auf einen String umzuleiten, müssen Sie kann std::stringstream verwenden. So funktioniert es:
<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 now contains "Bla\n"</code>
Diese Methode erfasst die Konsolenausgabe in einem String.
Um eine ordnungsgemäße Bereinigung sicherzustellen, können Sie eine Schutzklasse verwenden:
<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>
Durch die Verwendung dieses Schutzes können Sie sicher sein, dass der Puffer immer zurückgesetzt wird, um eine ordnungsgemäße Konsolen-E/A-Verarbeitung sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie leite ich stdout/stderr in einen String in C um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!