c++ cin常用总结

一 cin输入缓冲区

从标准输入(键盘)写入的数据会都存放在输入缓存区,当输入缓存区有数据时,cin会直接从输入缓存区读取,而当输入缓冲区没有数据时,cin会挂起请求用户输入数据;

二 cin的使用

(1)cin >> x;

从标准输入写入数据,按enter键结束此次输入,而cin >> x;读取一次数据结束的标志是空白(包括空格,制表符tab,回车)

表达式cin >> x;

(2)while(cin >> x)的使用

cin 是istream类的一个对象,表达式cin >> x的返回值;

  • cin >> x; 当cin读取的数据类型与预期的数据(x的数据类型)相同时,表达式cin >> x的返回值是cin对象,x的值为cin赋的值;
  • 当cin读取的数据类型与预期的数据不同时,表达式cin >> x的返回值是false,x的值为0(无论x的初始值是什么);
int i = 2;
cin >> i;
cout << i;
//输入w,与期望值i的类型int不同,表达式cin >> i返回false,x 的值变为0
//输出0

综上,while(cin >> x)当输入的数据类型与x的类型相同时,会一直执行循环,当输入的类型与预期类型不用时结束循环;

一般用于给整形数组或浮点型数组赋值,整形数组和浮点型数组不可对数组整体赋值,字符数组可整体对数组赋值,如

int array[10];
cin >> array; //会报错
//输入 5 6 2 1 3 7 8 9
char str[10];
cin >> str;
cout << str;
//输入 dsfds
//输出 dsfds

使用while(cin >> array[idx++])给整形或浮点型数组赋值

int array1[10];
double array2[10];
int idx = 0; //数组下标索引
while(cin >> array1[idx++])
//会从数组下标0开始给数组赋值,当标准输入类型与数组类型不同时,结束循环

(3)cin >> x >> y;

理解cin>>x;的返回值特性后也就好理解给多个变量赋值cin >> x >> y;的原理了,cin >> x赋值成功返回cin对象,再执行cin >> y;对y赋值,cin >> x 赋值失败时,x的值变为0,y的值不变;

三 cin.get()

(1)cin.get()读取一个字符;

有两种读取方式

char c1;
c1 = cin.get()
cin.get(ci)

cin.get()会从输入缓冲区读取一个字符(即使是换行符也能读取),

(2)cin.get(array,size)和cin.getline(arrray,size)读取一行

cin.get(array,size)和cin.getline(array,size)都用来读取一行数据,通过回车键来确定结尾,参数包括存储输入行数组名称,和读取长度size,如果size=20,则最多读取19个字符,最后一位用于存储空字符;

区别:

①对输入缓冲区换行符的处理

  • cin.getline(array.size)通过换行符确定行尾,然后丢弃输入缓冲区的换行符,
  • cin.get(array,size)同样使用换行符确定行尾,但不会丢弃输入缓冲区的换行符,

为什么有时使用cin.get(array,size)读取一行而不是使用cin.getline(array,size)呢?

使用cin.get(array,size)读取一行后,再使用cin.get()读取查看下一字符是不是换行符即可知道停止读取的原因,是因为已经读取了整行或者是由于数组已经被填满呢;

②对空行和输入溢出时的处理

  • 当输入是空行时,cin.get()会设置失效位(failbit),接下来输入会被阻断,可使用cin.clear()来恢复
  • 当输入溢出时,即输入行的字符数比指定的多,getline()和get()都会把余下的字符留在输入缓冲区中,而getline()会设置失效位,并关闭后面的输入;
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值