各位前辈,我有个关于I/O缓冲区的问题想请教
我有这样一段代码
#include
#include
using namespace std;
int main()
{
int a=0;
while(cin>>a)
cout<<a<<flush;
system("pause");
return 0;
}
我查到,当我每输入一个a的值,那么这个这就会储存到键盘缓冲区,如果我想输出显示a的值,就需要按下回车键刷新缓冲区。 然后我又百度到用flush函数可以刷新缓冲区,于是有了上面代码。我先连续输入4个5,每次键入一个5就按一次空格,再输入一个5.
按照我的理解,每次输入5时,while语句检验为真,就执行cout语句,我用flush来刷新缓冲区,那么照理每次我键入一个5,按下回车后就能出现一条cout语句才对,可是结果不是这样的,一定要按下回车才会有输出,这是为什么?
还有个问题就算是我每次输入一个5,就会按一个空格,表示已经输入一个a的值,然后再输入下一个5。请问在这里,我键入空格除了表示已经输入了一个a的值外,还有什么特别的意义吗?空格在这里会不会还有把我键入的a的值推入缓冲区的作用?
希望各位前辈能在百忙之中给我点指导
谢谢