2012-01-02 34 views
3

coutostream類的一個對象。
此外,當我們寫:如何將控制檯指定爲使用ostream寫入的文件?

filebuf objFileBuf; 
objFileBuf.open ("test.txt", ios :: out); 

ostream objOstream (&objFileBuf); 
objOstream << "Test sentence\n"; 

objFileBuf.close(); 

文本被寫入文件。

如何指定「控制檯」作爲通過ostream寫入的文件?

回答

5

你可以這樣做:

ostream objOstream (cout.rdbuf()); 
objOstream << "Test sentence goes to console\n"; 

或者,你可以這樣做:

ostream & objOstream = cout; 
objOstream << "Test sentence goes to console\n"; 

第二個不流緩衝工作,而你只需要創建的std::cout參考,並使用參考。

+0

:)謝謝,但它是'rdbuf'而不是'rdbug'。無論如何,這意味着我們必須間接使用cout?那麼qdebug如何寫入控制檯? – 2012-01-02 05:31:08

0

你不知道。您只需寫信給coutcerr。這些流是由shell安排的,你不能再做更多 - 你不能讓你的程序爲控制檯創建一個新的頻道。爲什麼你不能使用coutcerr

+0

不qDebug寫入流?如果它能做到這一點,爲什麼我不能? – 2012-01-02 05:13:29

+0

大概只是寫入'cerr'。你可以通過將標準輸出和標準錯誤重定向到文件或其他東西然後使用qdebug來測試。那麼qdebug可能會輸出到標準錯誤的地方,因爲它只是訪問std :: cerr,除非它明確給出了一個文件句柄或字符串。 – Dan 2012-01-02 05:19:32

+0

據推測,他正在測試他的文件寫入程序。無論如何,這就是我爲什麼要挖這個東西的原因。 – linkhyrule5 2013-08-16 01:56:02