將 stdout/stderr 重定向到字串
許多討論都集中在將 stdout/stderr 重定向到檔案。但是,是否可以將此輸出重定向到字串?
解決方案
是的,重定向到std::stringstream 物件是可行的:
<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>
為了確保緩衝區自動重置,請考慮使用保護類別:
<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>
以上是能否將標準輸出 (stdout) 和標準錯誤 (stderr) 重定向到 C 中的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!