cin输入类型与数据类型不符检查

本文详细介绍了C++中的istream类如何重载抽取运算符,并通过实例演示了cin对象如何处理标准输入流,以及当输入不符合预期时的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  istream类重载了抽取运算符<< ,>>,  所以cin >> 支持c++内置的所有基本数据类型。cin对象将标准输入表示为字节流,然后根据抽取 运算符<<(本质就是一个函数)的参数类型对字节流进行类型转换,转换为所需的类型。

       不同版本的抽取运算符查看输入流的方法是相同 的。如果输入的前面一部分字符为空白(空格、换行符、和制表符),他们会跳过,直到遇到非空白字符。当输入没有满足程序期望的时候,比如对于一个int类型的变量a,却输入字符H,这种情况下,抽取运算发将不会改变变量a的值,并返回0,经常被放在循环条件中来终止循环。

测试代码如下:

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //check_it.cpp -- checking for valid input  
  2. #include <iostream>  
  3.   
  4. int main() {  
  5.     using namespace std;  
  6.     cout << " Enter numbers:";  
  7.   
  8.     int sum = 0;  
  9.     int input;  
  10.     while ( cin >> input ) {  
  11.         sum += input;  
  12.     }  
  13.   
  14.     cout << "Last value entered  = " << input << endl;  
  15.     cout << "sum = " << sum << endl;  
  16.     return 0;  
  17. }  
运行效果如图:


       

       由于输入被缓冲。因此通过键盘输入的第二行在用户按下回车键之前,不会被发送给程序。然而循环在字符z处停止了对输入的处理,因为z不予int类型相匹配。输入与预期格式不匹配反过来将导致表达式cin>>input的返回值为false,因此while循环被终止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值