什么时候std::cout缓冲区可以非空

when can std::cout buffer be non-empty?

本文关键字:缓冲区 std cout 什么时候      更新时间:2023-10-16

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

但是,在cout被刷新之前,我怎么能窥视cout的流缓冲区呢?

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

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

那么,什么样的结构允许我窥视cout缓冲区内部呢?

p。在windows7上运行vc++ 2010

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

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

程序运行这个,输出应该是debug,但是它没有为我写任何东西,所以我认为程序没有到达那里…

以下链接与本主题密切相关c++缓冲流IO

(但我仍然不确定如何/何时获得count .rdbuf()到字符串。)