簡體   English   中英

在函數中抑制cout輸出

[英]Suppressing cout output with in a function

我正在使用一個共享庫,其功能是在各處執行std :: cout。 是否可以在呼叫者級別執行任何操作,我可以抑制cout outout或將其重定向到某個位置?

是否有可能在c ++中嘗試這樣的事情。

像這樣的東西,只需為你的庫調用創建函數包裝器,重定向cout

int main( void )
{
 std::ofstream lStream( "garbage.txt" );
 std::streambuf* lBufferOld = std::cout.rdbuf();

 std::cout.rdbuf( lStream.rdbuf() );
 std::cout << "Calling library function" << std::endl;

 std::cout.rdbuf( lBufferOld );
 std::cout << "Normal output" << std::endl;

 std::cout.rdbuf( lStream.rdbuf() );
 std::cout << "Calling another library function" << std::endl;

 std::cout.rdbuf( lBufferOld );
 std::cout << "Another normal output" << std::endl;

 lStream.close();

 return ( 0 );
}

您始終可以通過創建處理輸出的類來過濾所有I / O. 鑒於該類可能在應用程序范圍內使用,靜態類可能是有序的,但您可以根據需要實例化該類的實例。

除了根據參數字符串寫入或不寫入cout或甚至選擇不同的輸出之外,類還可以根據所選輸出的類型格式化文本。

我看着ostream和offhand沒有看到任何方式你可以直接修改cout。 您之前遇到過需求,所以希望其他人閱讀本文時可能會有更好的想法來創建我建議的課程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM