为什么下面的代码没有阻止编译器自动刷新缓冲区?
cout.sync_with_stdio(false);
cin.tie(nullptr);
cout << "hello";
cout << "world";
int a;
cin >> a;
输出:
helloworld
我正在使用 Visual Studio 2012 Ultimate
最佳答案
据我所知,只要实现喜欢这样做,就可以刷新流,即不能保证在插入操作后会刷新流。但是,您可以使用这些操纵器之一来确保您的流被刷新(这是我所知道的唯一一个,所以如果有人知道其他操纵器,请发表评论):
-
std::endl
- 在流中插入一个换行符并刷新它, -
std::flush
- 只是刷新流, -
std::(no)unitbuf
- 在每次插入操作后启用/禁用刷新流。
关于c++ - 使编译器不自动刷新缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977657/