有人可以解释(最好用简单的英语)如何std::flush工作?
谢谢.
我有以下代码:
std::cout << "Beginning computations..."; // output 1
computations();
std::cout << " done!\n"; // output 2
Run Code Online (Sandbox Code Playgroud)
然而,问题是输出#1和输出#2经常(几乎)同时出现.也就是说,输出#1通常直到computations()返回后才会打印到屏幕上.由于输出#1的整个目的是指示某些事情在后台发生(从而鼓励用户耐心),因此这个问题并不好.
有没有办法强制std::cout缓冲区在computations()通话前打印?或者,是否有其他方式(使用其他东西std::cout)打印到标准输出,可以解决这个问题?
有什么情况什么时候std::cout << "hello"不起作用?我有ac/c ++代码,但是std::cout不打印任何东西,甚至不是常量字符串(例如"hello").
有没有办法检查是否cout能够/无法打开流?还有像一些成员函数good(),bad()...但我不知道哪一个是适合我.
只是阅读"斯科特迈耶斯"的一篇古老但有趣的文章
http://aristeia.com/Papers/C++ReportColumns/novdec95.pdf
基本上它是关于宁愿使用'\n'过std::endl(我同意,并使用相同的扩充年).
但是最后一部分表明这不包含在他的书中,因为整个事情由于两点而变得没有实际意义:
std::cout 没有缓冲.ios::unitbuf未明确定义on std :: cout 的状态(因此依赖于实现).我做了一个快速查看,但找不到明确的标准参考1是真的.是否std::cout与我一直以来的理解相反?