问题描述
- C++新手关于I/O缓冲区输入与输出的问题
-
各位前辈,我有个关于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的值推入缓冲区的作用?
希望各位前辈能在百忙之中给我点指导
谢谢
解决方案
你如果在 cout 延时一会,就会看到输出,而不是要等待。
解决方案二:
可以用getline(cin , a)来获取一行输入
解决方案三:
按下回车才停止这次输入
解决方案四:
谢谢各位前辈,我有点明白了,我的问题应该和cin和cout的作用规则有点关系,等我上网好好百度下学习下。总之谢谢了
解决方案五:
cin会读到空格的时候停止这次输入,并把数据送给a
时间: 2025-01-20 15:11:43