/*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++_流的条件状态的更多相关文章

  1. 初识io流条件状态

    一  流状态    C++中的输入输出系统负责记录每一个输入输出操作的结果信息,这些当前的状态信息被包含在io_state类型的对象中.io_state是一个枚举类型(就像open_mode一样),以 ...

  2. ca77a_c++__一个打开并检查文件输入的程序_流对象_操作文件

    /*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14*/ /*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14 */ #include < ...

  3. ca76a_c++_流文件打开输入输出文件模式p773

    /*ca76a_c++_流文件打开输入输出文件模式利用文件流打开文件进行输入与输出时的选项in.out.app(附加模式).ate((end)文件打开后,定于文件结尾).trunc(裁剪).binar ...

  4. 5-4 Sentinel 限流_流控与降级

    Sentinel 介绍 什么是Sentinel Sentinel也是Spring Cloud Alibaba的组件 Sentinel英文翻译"哨兵\门卫" 随着微服务的流行,服务和 ...

  5. QA16复制_新增查询条件,修改批量使用决策

    需求: 增加评估代码,检验类型条件.(检验批中部分检验项目未录结果的检验批显示    注:标准的程序,不支持空结果的查询和使用决策) 1.复制 RQEVAI10 程序 2.因为这是用的QM模块的逻辑数 ...

  6. Python基础(一)_数据类型、条件判断、循环、列表

    编译型语言(中文版)运行代码之前,要先编译.然后再运行编译时间比较长c.c++.c# 解释型语言(翻译版)运行的时候才去编译,运行一次编译.运行效率没有编译型语言快python.ruby.shell. ...

  7. 【c++】字符串流输出恢复状态问题

    缘起 #include <iostream> #include <sstream> using namespace std; int main() { istringstrea ...

  8. Hibernate_day02--课程安排_主键生成策略_对实体类crud操作_实体类对象状态

    Hibernate_day02 上节内容 今天内容 实体类编写规则 Hibernate主键生成策略 实体类操作 对实体类crud操作 添加操作 根据id查询 修改操作 删除操作 实体类对象状态(概念) ...

  9. HTML条件注释_关于IE条件注释

    普通的HTML注释形式是 <!-- 注释 --> 而IE5~IE9这5个版本的IE浏览器还另外支持一种特殊的if条件注释(感觉有点类似模板渲染时的语法结构) <!--[if IE]& ...

随机推荐

  1. Ajax长轮询(LongPoll)

    1)HTML HTTP是无状态.单向的协议,用户只能够通过客服端向服务器发送请求并由服务器处理发回一个响应.若要实现聊天室.WEBQQ.在线客服.邮箱等这些即时通讯的应用,就要用到“ 服务器推送技术( ...

  2. Verilog代码和FPGA硬件的映射关系(四)

    其实在FPGA的开发中理想情况下FPGA之间的数据要通过寄存器输入.输出,这样才能使得延时最小,从而更容易满足建立时间要求.我们在FPGA内部硬件结构中得知,IOB内是有寄存器的,且IOB内的寄存器比 ...

  3. MySQL的CHAR 和 VARCHAR的区别

    CHAR 和 VARCHAR 类型,CHAR 列的长度固定, VARCHAR 列中的值为可变长字符串.在检索的时候,CHAR 列删除了尾部的空格,而 VARCHAR 则保留这些空格s

  4. Docker容器启动时初始化Mysql数据库

    1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案 ...

  5. pandas 小技巧

    1.找出某个字段包含某字符串的行: my_df[my_df['col_B'].str.contains('大连') > 0]或者 my_df[my_df['col_B'].apply(lambd ...

  6. PAT1034 有理数四则运算 (20分)

    1034 有理数四则运算 (20分)   本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全 ...

  7. 程序员的脑袋系列---利用ffmpeg命令提取音频

    今日各大播放器的版权控制越来越严格.导致很多歌曲无法听,但是MV却可以听.这样很蛋疼有木有? 然而,我们可以利用ffmpeg工具提取MV的音频,比如做成MP3格式,这样就可以听了.--哈哈(邪恶地笑) ...

  8. Java实现 LeetCode 594 最长和谐子序列(滑动窗口)

    594. 最长和谐子序列 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1. 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度. 示例 1: 输入: [1,3, ...

  9. Java实现 LeetCode 440 字典序的第K小数字

    440. 字典序的第K小数字 给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字. 注意:1 ≤ k ≤ n ≤ 109. 示例 : 输入: n: 13 k: 2 输出: 10 解释: ...

  10. Java实现 蓝桥杯VIP 算法提高 密码锁

    算法提高 题目 2 密码锁 时间限制:1.0s 内存限制:1.0GB 问题描述 你获得了一个据说是古代玛雅人制作的箱子.你非常想打开箱子看看里面有什么东西,但是不幸的是,正如所有故事里一样,神秘的箱子 ...