2012-01-02 30 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