c++-C++新手关于I/O缓冲区输入与输出的问题

问题描述

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

c++-C++新手关于I/O缓冲区输入与输出的问题的相关文章

Merlin的魔力: Merlin的新I/O缓冲区的输入和输出

Java 2 平台标准版(Java 2 Platform Standard Edition,J2SE)1.4 对 Java 平台的 I/O 处理能力做了大量更改.它不仅用流到流的链接方式继续支持以前 J2SE 发行版的基于流的 I/O 操作,而且 Merlin 还添加了新的功能 - 称之为新 I/O 类(NIO),现在这些类位于 java.nio 包中. I/O 执行输入和输出操作,将数据从文件或系统控制台等传送至或传送出应用程序.(有关 Java I/O 的其它信息,请参阅 参考资料). 缓冲

c++中输入和输出缓存区的一些问题

问题描述 c++中输入和输出缓存区的一些问题 1.c++中如果在小黑框中输入一个字符串但是没有按回车使之输入到缓冲区,那么这些数据存放在哪里? 2.有哪些情况会刷新输出缓冲区? 3.输入缓冲区和输出缓冲区分别在内存的那个地方,是内存中的栈还是堆还是其他地方? 4.怎么在小黑框里吧换行字符给get()? 解决方案 1.存放在操作系统的I/O缓冲区 2.不知道 3.内存的栈区 4.使用转义字符

c++的数据输入与输出

问题描述 c++的数据输入与输出 使用c++的cin结合for循环怎么实现多组数据的录入? 我使用如下的方式是不行的,经调试后发现只有第一次正常录入,后来for循环就跳出了.. 解决方案 在 cin 之前加一句话, fflush(stdin); //清空输入缓冲区 解决方案二: 把代码贴全了,看看你错哪里了,怎么不行. 点击发表框工具栏上面的代码片图标,把代码放到代码片里,否则粘贴过来,容易出现错误,格式也很乱. 象这句话这样的格式就对了. 解决方案三: C++字符数组的输入输出c++文件流一行

java数组-这是我的代码,如何才能让数组实现连续的输入和输出

问题描述 这是我的代码,如何才能让数组实现连续的输入和输出 public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println(""请输入数字个数""); int n = sc.nextInt(); System.out.println(""请输入数字&

无线网络最新技术:多重输入多重输出

由于多重输入多重输出(multiple-input, multiple-output:MIMO)的技术提供了一个扩展无线区域网络(WLAN)范围的极佳方式,因而最近成为了焦点.MIMO技术始于1985年,但直到现在才应用于晶片层级的装置,以大幅改善传输范围与容量. 由于MIMO并不是单一概念,而是由多种无线射频技术所组成,因此我们必须充份了解MIMO的运作和效能.当应用于WLAN时,有些MIMO技术能与现时的WLAN标准(如802.11a.802.11b与802.11g)相容,因而能扩充其传输范

实例解析C++/CLI的输入与输出

当使用标准C++编程时,我们已开始接触到两个主要的I/O"工具":标准C头文件cstdio和标准C++中与流相关的头文件iostream,如果加上Windows的话,那么还有Win32库和MFC库,另外,还有CLI/.NET.本文将要探讨的,就是C++/CLI中的输入与输出. 简介 日常,我们与文件或设备进行通讯的逻辑通道,称为流.数据可以8位字节或16位Unicode字符形式进行读写,而两者都有其自己的类集:另外,还有用于在字节与字符之间转换的类.其中,字符流通过Stream类及其的

输入和输出

可将Java库的IO类分割为输入与输出两个部分,这一点在用Web浏览器阅读联机Java类文档时便可知道.通过继承,从InputStream(输入流)衍生的所有类都拥有名为read()的基本方法,用于读取单个字节或者字节数组.类似地,从OutputStream衍生的所有类都拥有基本方法write(),用于写入单个字节或者字节数组.然而,我们通常不会用到这些方法:它们之所以存在,是因为更复杂的类可以利用它们,以便提供一个更有用的接口.因此,我们很少用单个类创建自己的系统对象.一般情况下,我们都是将多

c语言-关于oj里面输入和输出的问题

问题描述 关于oj里面输入和输出的问题 一个很简单的题目: 给定区间[-231, 231]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1行给出正整数T(<=10),是测试用例的个数.随后给出T组测试用例,每组占一行,顺序给出A.B和C.整数间以空格分隔. 输出格式: 对每组测试用例,在一行中输出"Case #X: true"如果A+B>C,否则输出"Case #X: false",其中X是测试用例的编号(从1开始). 输入样例:

Shell学习笔记---重定向输入、输出(原创)

声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的. 重定向输入.输出示例$cat         #cat把键盘看作标准输入,屏幕看作标准输出.按下CTRL+D结束键盘输入 $cat > sample.txt $cat /dev/null > /var/log/messages $cat  /etc/profile  >   /var/log/messages $cat  /etc/profile  >>  /var/log/messages     #在文件/v