ca73a_c++_流的条件状态
/*ca73a_c++_流的条件状态
strm::iostate
strm::badbit //流的状态
strm::failbit //输入的状态,应该输入数字,结果输入为字符,
strm::eofbit
s.eof()
s.fail()
s.bad()
s.good()
s.clear()////恢复流的状态
s.clear(flag)
cin.ignore(200,'\n');//清除前200个字符,如果遇到了‘\n’就提前结束
s.setstate(flag)
s.rdstate()
cin.setstate(ifstream::badbit);//应该写成(istream::badbit)
//error C2027: 使用了未定义类型“std::basic_ifstream<char,std::char_traits<char>>”
//强制把流的状态变成bad方法:用的二进制位来标志它的状态:如:000111000
//cin.setstate(istream::badbit);
//error C2027: 使用了未定义类型“std::basic_ifstream<char,std::char_traits<char>>”
//cin.setstate(istream::failbit);//输入的状态,应该输入数字,结果输入为字符,
//同时改变两个
//cin.setstate(istream::badbit|istream::failbit);
//清除bad
//cin.clear(istream::badbit);
//cin.clear(istream::failbit);
//保存流的状态
istream::iostate old_state = cin.rdstate();
//然后使用old_state,
//使用完成后。再恢复
//cin.clear(old_state);
*/
/*ca73a_c++_流的条件状态
strm::iostate
strm::badbit //流的状态
strm::failbit //输入的状态,应该输入数字,结果输入为字符,
strm::eofbit s.eof()
s.fail()
s.bad()
s.good()
s.clear()////恢复流的状态
s.clear(flag)
cin.ignore(200,'\n');//清除前200个字符,如果遇到了‘\n’就提前结束
s.setstate(flag)
s.rdstate()
cin.setstate(ifstream::badbit);//应该写成(istream::badbit)
//error C2027: 使用了未定义类型“std::basic_ifstream<char,std::char_traits<char>>” //强制把流的状态变成bad方法:用的二进制位来标志它的状态:如:000111000
//cin.setstate(istream::badbit);
//error C2027: 使用了未定义类型“std::basic_ifstream<char,std::char_traits<char>>”
//cin.setstate(istream::failbit);//输入的状态,应该输入数字,结果输入为字符, //同时改变两个
//cin.setstate(istream::badbit|istream::failbit); //清除bad
//cin.clear(istream::badbit);
//cin.clear(istream::failbit); //保存流的状态
istream::iostate old_state = cin.rdstate();
//然后使用old_state,
//使用完成后。再恢复
//cin.clear(old_state); */
#include <iostream> using namespace std; void check_cin_state(istream& is)
{ if (is.bad())//检查cin是否有严重的问题,坏了。系统级错误时
{
cout << "cin bad()" << endl;
}
else
cout << "cin is not bad()" << endl;
if (is.fail())
cout << "输入数字,但输入的其它的,如果不能转成数字,就fail" << endl;
else
cout << "cin not fail()" << endl;
if (is.eof())//判断 ctrl+z,结束符
cout << "cin eof()" << endl;
else
cout << "cin not eof()" << endl;
if (is.good())
cout << "cin good()" << endl;//没出问题,就是good
else
cout << "cin not good()" << endl;
} int main()
{
cout << "检查cin的状态: " << endl;
//强制把流的状态变成bad方法:用的二进制位来标志它的状态:如:000111000
//cin.setstate(istream::badbit);
//error C2027: 使用了未定义类型“std::basic_ifstream<char,std::char_traits<char>>”
//cin.setstate(istream::failbit);//输入的状态,应该输入数字,结果输入为字符, //同时改变两个
//cin.setstate(istream::badbit|istream::failbit); //清除bad
//cin.clear(istream::badbit);
//cin.clear(istream::failbit); //保存流的状态
istream::iostate old_state = cin.rdstate();
//然后使用old_state,
//使用完成后。再恢复
//cin.clear(old_state);
check_cin_state(cin);
cout << "请输入一个整数:" << endl;
int n;
cin >> n;
cout << "再检查一次cin的状态: " << endl;
check_cin_state(cin);
//demo2
int sum = , value;
//while (cin >> value) //如果输入字母,条件不成立,就退出循环了。
//{
// sum += value;
// cout << "Sum is : " << sum << endl;
//}
while (cin >> value, !cin.eof())////如果输入字母,即使条件不成立,不让退出循环的方法。
{
//!cin.eof(),逗号表达式,最后一个条件决定
if (cin.bad())
throw std::runtime_error("IO stream corrupted");
if (cin.fail())
{
cerr << "bad data,try again" << endl;
//输入错误后,cin就不能用了,及时标志flag是bad,
cin.clear();//恢复流的状态
cin.ignore(,'\n');//清除前200个字符,如果遇到了‘\n’就提前结束
continue; }
sum += value;
cout <<"Sum is : " << sum << endl;
} return ;
}
ca73a_c++_流的条件状态的更多相关文章
- 初识io流条件状态
一 流状态 C++中的输入输出系统负责记录每一个输入输出操作的结果信息,这些当前的状态信息被包含在io_state类型的对象中.io_state是一个枚举类型(就像open_mode一样),以 ...
- ca77a_c++__一个打开并检查文件输入的程序_流对象_操作文件
/*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14*/ /*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14 */ #include < ...
- ca76a_c++_流文件打开输入输出文件模式p773
/*ca76a_c++_流文件打开输入输出文件模式利用文件流打开文件进行输入与输出时的选项in.out.app(附加模式).ate((end)文件打开后,定于文件结尾).trunc(裁剪).binar ...
- 5-4 Sentinel 限流_流控与降级
Sentinel 介绍 什么是Sentinel Sentinel也是Spring Cloud Alibaba的组件 Sentinel英文翻译"哨兵\门卫" 随着微服务的流行,服务和 ...
- QA16复制_新增查询条件,修改批量使用决策
需求: 增加评估代码,检验类型条件.(检验批中部分检验项目未录结果的检验批显示 注:标准的程序,不支持空结果的查询和使用决策) 1.复制 RQEVAI10 程序 2.因为这是用的QM模块的逻辑数 ...
- Python基础(一)_数据类型、条件判断、循环、列表
编译型语言(中文版)运行代码之前,要先编译.然后再运行编译时间比较长c.c++.c# 解释型语言(翻译版)运行的时候才去编译,运行一次编译.运行效率没有编译型语言快python.ruby.shell. ...
- 【c++】字符串流输出恢复状态问题
缘起 #include <iostream> #include <sstream> using namespace std; int main() { istringstrea ...
- Hibernate_day02--课程安排_主键生成策略_对实体类crud操作_实体类对象状态
Hibernate_day02 上节内容 今天内容 实体类编写规则 Hibernate主键生成策略 实体类操作 对实体类crud操作 添加操作 根据id查询 修改操作 删除操作 实体类对象状态(概念) ...
- HTML条件注释_关于IE条件注释
普通的HTML注释形式是 <!-- 注释 --> 而IE5~IE9这5个版本的IE浏览器还另外支持一种特殊的if条件注释(感觉有点类似模板渲染时的语法结构) <!--[if IE]& ...
随机推荐
- [安卓基础] 004.运行app
运行你的app 这篇课程会教你: 1.如何在设备上运行你的app. 2.如何在模拟器上运行你的app. 当然,在学习之前,你还需要知道: 1.如何使用设备. 2.如何使用模拟器. 3.管理你的项目. ...
- Python 每日一练(5)
引言 Python每日一练又开始啦,今天的专题和Excel有关,主要是实现将txt文本中数据写入到Excel中,说来也巧,今天刚好学校要更新各团支部的人员信息,就借此直接把事情做了 主要对于三种数据类 ...
- 服务器ip地址 服务器ip登录方法
服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器.其中域名必须对应一个IP地址,一个域名可以有多个IP地址,而IP地址不一定有域名. 简单的解释就是:服 ...
- HTTP 冷知识 | HTTP 请求中,空格应该被编码为 %20 还是 + ?
HTTP 请求中,空格应该被编码为什么?今天我们走进 RFC 文档和 W3C 文档,了解一下这个「史诗级」大坑. 1.%20 还是 + ? 开始讲解前先看个小测试,在浏览器里输入 blank test ...
- Java实现 LeetCode 496 下一个更大元素 I
496. 下一个更大元素 I 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nu ...
- Java实现 LeetCode 23 合并K个排序链表
23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输 ...
- Android中如何使用列表对话框
给按钮绑定,并且设置Click事件 bt3=findViewById(R.id.btn3); bt3.setOnClickListener(new View.OnClickListener() { @ ...
- java实现第N个素数
素数就是不能再进行等分的整数.比如:7,11.而9不是素数,因为它可以平分为3等份.一般认为最小的素数是2,接着是3,5,... 请问,第100002(十万零二)个素数是多少? 请注意:2 是第一素数 ...
- 连接mongoodb并且向数据库添加信息
连接mongoodb 首先安装mongoose 配置URL 连接Mongoodb数据库 控制台输入指令运行该js文件 像这样就连接成功了 向Mongodb数据库增加信息,首先需要写入表格信息 接着解构 ...
- 简单5步,轻松debug K8S服务!
作者: Ram Rai,性能.可扩展性以及软件架构的爱好者 原文链接: https://medium.com/better-programming/debug-your-kubernetes-serv ...