c++ - 标准输出并需要刷新它 C++

标签 c++ stdout flush

我有一些 C++ 代码使用 cout 语句进行调试,出于某种原因,除非我执行 std::cout.flush( ); 结尾。

我不太明白为什么需要这个刷新操作。

有人有什么见解吗?

最佳答案

补充其他答案:您的调试语句应该转到 cerr,因为:

  • 它写入标准错误,这意味着在运行应用程序时,您可以通过重定向轻松地将“正常”程序输出与错误/调试信息分开;
  • 最重要的是,cerr默认是unbuffered,也就是说,每次输出操作后,都会自动刷新自己,并在一般来说,这对于错误和调试输出是可取的。

(来源:C++ 标准,§27.3.1 ¶4-5,§27.4.2.1.2 表 83)

关于c++ - 标准输出并需要刷新它 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214629/

相关文章:

c++ - 使用共享库公开类型安全的动态 API

c++ - 集合论数据结构

c++ - 在 CUDA 分配模板函数中弃用了从字符串常量到 'char *' 的转换

python - 在 Python 中静默函数的标准输出,而不破坏 sys.stdout 并恢复每个函数调用

c++ - 输入未清除

c++ - 将 CPP 定义移植到 python

ansible - 如何查看 Ansible 命令的 stdout、stderr 以便人类可读?

c - 将 child 的标准输出传递给 parent 标准输入

matlab - 如何在 Matlab 或 Octave 中刷新 disp 的输出?

java - 调整大小、刷新和关闭 ByteBuffer