1

cout.rdbuf()例如,我在这里看到过。这意味着,流cout有一个与之关联的流缓冲区,在我们刷新它之前它是非空的。

但是,我怎样才能在 cout 被刷新之前查看 cout 的流缓冲区呢? IE

cout << "I want to read this before this get flushed";
cout.UnknownFunction();  //this would save the buffer into a string variable
cout << flush;

但是在当前的代码形式中,第一行之后的所有内容都将刷新到屏幕上。

那么,什么样的构造可以让我窥视 cout 缓冲区的内部呢?

PS。我在 windows7 上运行 VC++ 2010

4

2 回答 2

0

我认为这不会在第一行之后刷新,但我绝对不确定。我经历过endl,但其他人没有,可能是太多角色自动冲洗,但我不知道。我(不小心)创建了一个这样的程序(简而言之):

cout << "x";
while (true) {}

程序运行了这个,输出将是调试,但它没有为我写任何东西,所以我认为程序没有到达那里......

于 2013-03-30T12:48:38.323 回答
0

Following link is closely related to this topic C++ buffered stream IO

(But I'm still not sure how/when to get cout.rdbuf() onto a string.)

于 2013-03-31T01:37:16.797 回答