结束while(cin >> value)
2016-01-19 16:09
393 查看
当看《c++ primer》这本书的时候有这样一段示例代码
当自己在终端调试的时候输入数字并多次回车始终无法结束while循环,看到后来才明白了原因。
cin是istream类型的对象,这个对象也被称为标准输入。
what is >>
>>为输入运算符
左侧参数:istream对象
右侧参数:任意对象
返回值:返回istream对象
作用:它从给定的istream读入数据,并存入给定的对象中
分析std::cin >> value
此表达式从标准输入读取下一个数,保存在value中,输入运算符返回其左侧运算对象,在这个示例中是std::cin.因此,此循环实际上检测的是std::cin。
当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符,或遇到一个无效输入时,istream对象的状态会变成无效。处于无效的istream对象为使条件为假。因此,while循环一直会执行,直到遇到文件结束符或者错误。
小提示:windows下的输入文件结束符为Ctrl+Z,Unix和Linux下一般是Ctrl+D
当输入数字后按Ctrl+Z时,效果图如下:
当输入数字后故意输错时回车,效果图如下:
《c++ primer 》 ↩
#include <iostream> int main(){ int val,sum=0; while(std::cin>>val){ sum+=val; } std::cout<<"the result is "<<sum<<std::endl; return 0; }
当自己在终端调试的时候输入数字并多次回车始终无法结束while循环,看到后来才明白了原因。
原因 1
what is cincin是istream类型的对象,这个对象也被称为标准输入。
what is >>
>>为输入运算符
左侧参数:istream对象
右侧参数:任意对象
返回值:返回istream对象
作用:它从给定的istream读入数据,并存入给定的对象中
分析std::cin >> value
此表达式从标准输入读取下一个数,保存在value中,输入运算符返回其左侧运算对象,在这个示例中是std::cin.因此,此循环实际上检测的是std::cin。
当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符,或遇到一个无效输入时,istream对象的状态会变成无效。处于无效的istream对象为使条件为假。因此,while循环一直会执行,直到遇到文件结束符或者错误。
小提示:windows下的输入文件结束符为Ctrl+Z,Unix和Linux下一般是Ctrl+D
执行效果
本人测试环境为linux当输入数字后按Ctrl+Z时,效果图如下:
当输入数字后故意输错时回车,效果图如下:
《c++ primer 》 ↩
相关文章推荐
- 酷炫的android开源UI
- 9.Which statement is true regarding the INTERSECT operator?
- AlertDialog.Builder用法
- Django用户认证系统 authentication system----登陆访问限制@login_required
- UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
- iOS UI界面之间传值方式的整理总结(2)单例方法
- ios UI控件关联
- <iOS Human Interface Guidelines>(iOS人机交互手册)读书笔记
- UEdit初始化加载内容偶尔失败,解决
- 解决Incorrect integer value: '' for column 'id' at row 1的方法
- Maven使用yuicompressor-maven-plugin打包压缩css、js文件
- iOS 平台UI设计小结
- UIImagePickerController显示中文界面
- UIImagePickerController显示中文界面
- 解决UITableView数据没有充满屏幕时,显示多余的空白cell的问题
- UITableView的分割线不满屏的解决方法
- Codeforces Round #313 (Div. 2) D.Equivalent Strings (字符串)
- Fuel UX wizard example
- 特殊权限SUID以及ACL
- iOS UI界面之间传值方式的整理总结(3)通知传值NSNotification