关于缓冲区的刷新问题
- C/C++ code
#include <iostream>#include <iomanip>using namespace std;int main(){ ///// cout<<left<<setw(10)<<"OK"; cin.ignore();//用于刷新缓冲区 cout<<left<<setw(10)<<123<<endl;//endl用于换行和刷新缓冲区 ///// cout<<left<<setw(10)<<"OK"<<endl; cout<<left<<setw(10)<<123<<endl; ///// cout<<left<<setw(10)<<"OK"; //cin.sync()//cin.clear() cout<<left<<setw(10)<<123<<endl; ///// cout<<left<<setw(10)<<"OK";//<<flush;//<<ends;//<<unitbuf;//<<nounitbuf; cout<<left<<setw(10)<<123<<endl; //由此引发了一个问题 //cin.sync(),cin.clear() flush ends unitbuf nounitbuf 不都是刷新缓冲区吗? //为什么它们与ignore和endl 在屏幕上的输出有明显不同,哪位大神解释一下这个问题。 //同样刷新了缓冲区,却得到了不一样的结果!搞得我有点糊涂了。 return 0;}[解决办法]
谁跟你说的cin.sync(),cin.clear() 是刷新缓冲区?离这家伙远点。
谁让你用的ends unitbuf nounitbuf ?离这家伙远点。
[解决办法]
[解决办法]
cin.sync();清空输入缓冲区
cin.clear();重置流