如何在C 中將輸出重新導向到字串
對於各種偵錯和測試場景,可以輕鬆地重新導向標準輸出和錯誤流到字串而不是控制台。
解決方案:使用std::stringstream
要將stdout/stderr 重新導向到字串,您可以使用std ::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>
用於緩衝區重置的保護類別
為了確保重定向後緩衝區被重置,您可以建立一個保護類別:
<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>
這個保護類別保證緩衝區始終恢復到其原始狀態,即使發生異常也是如此。
以上是如何在 C 語言中捕獲字串中的標準輸出和錯誤流?的詳細內容。更多資訊請關注PHP中文網其他相關文章!