我一直在学习如何使用cout进行冲洗,所以我决定进行快速测试。
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
cout << "Line 1..."; // OR cout << "Line 1..." << flush;
usleep(500000);
cout << "\nLine 2" << endl;
cout << "Line 3" << endl ;
return 0;
}
在上面给出的情况下,预期输出是:
第1行......
第2行
3号线
在延迟一段时间后完全打印出来。但是,在其中的场景中
包含"<< flush;"
,预期结果是第1行立即打印,然后经过一段延迟后,第2行和第3行打印。
这些预期的输出仅在我使用以下命令在Linux机器上编译程序时发生:
g++ -o myFile.out myFile.cpp -Wall
然后使用:
运行它./myFile.out
当我在我的Windows机器上运行这些相同的代码时,无论是"<< flush;"
的插入,都会立即显示第1行。为什么会这样?
应该注意的是,在我的Windows机器上,我正在通过codeblocks x64编译和运行我的代码。根据Codeblocks设置&gt;编译器&gt;工具链可执行文件,我的C ++编译器是&#34; mingw32-g ++。exe&#34;。这不像我之前在Linux上运行g++
的编译器一样吗?谢谢!