Cplusplusrookie 2015-01-15 12:38 采纳率: 50%
浏览 1625

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的值推入缓冲区的作用?

希望各位前辈能在百忙之中给我点指导
谢谢

  • 写回答

5条回答 默认 最新

  • 91program 博客专家认证 2015-01-15 13:02
    关注

    你如果在 cout 延时一会,就会看到输出,而不是要等待。

    评论

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b