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 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题