c++ io条件状态 的一个例子

   日期:2020-10-02     浏览:86    评论:0    
核心提示://以下是一个例子,假设从标准输入的是:aab asdf asdf asdf asdf#include <iostream>#include <sstream>#include <string>#include <fstream>using namespace std;int main(){ int i_number;cout << "input i_number:"<<endl; while(cin >..

//以下是一个例子,假设从标准输入的是:aab asdf asdf asdf asdf

#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
  int i_number;
cout << "input i_number:"<<endl;
  while(cin >> i_number)
   {cout << i_number << endl;}             //这里cin会把所有的字符输入到i_number里面(因为输入字符,所以i_number得到0)。包括空格(这里把输入的第一个空格以前的所有字符给它,然后其余的所有字符都存在cin中危险哦,所以导致cin流发生错误)
cout<<"inumber_is:" <<i_number << endl;
cout << "cin 's rdstate:" << cin.rdstate() << endl; //流发色错误,那么failbit被置位,所以这里值是4
ios::iostate old_state = cin.rdstate();      //记住cin此时的错误,把他放在ios::iostate(这是个类型,可以存放所有的标志位类型)类型的old_state内
ios::iostate a  = cin.goodbit;              //定义a代表常量 goodbit的值 0 
ios::iostate b  = cin.badbit;              //定义b代表常量 badbit的值 1
ios::iostate c  = cin.eofbit;              //定义c代表常量 eofbit的值 2
istream::iostate d  = cin.failbit;         //定义d代表常量 failbit的值 4
cout << a << endl;
cout << b << endl;
cout << c << endl;
cout << d << endl;
cout << "after been given character,cin 's state is: " << cin.rdstate() << endl;
ifstream fff("2.txt");                 //定义一个ifstream(读取用)对象,准备读取文件2.txt内容
ofstream f2("2.txt");                  //定义一个ofstream(写入用) 对象,准备写入到文件2.txt
string str3;                           //定一个一个string对象
fff >> str3;                           //从文件流对象fff读入到str3
cout << fff.rdstate() << endl;  //at last ,his ' s state is 6;
//f2.clear(cin.rdstate());
cout << "cin'rdstate " <<cin.rdstate() << endl;  //输出此时的cin流的状态信息
cout << "fff.rdstate*() is:"<<fff.rdstate() << endl;  //输出fff流的状态信息
fff.setstate(cin.rdstate());                //把流cin的状态信息添加到fff中(fff原有状态信息不变)
fff.clear(cin.rdstate());                   //用cin状态信息替换fff状态信息
cout << fff.rdstate() << endl;                 
char ch;
cout <<"cin.rdstate() is:" <<cin.rdstate() << endl;
cin.clear();                              //复位cin
string s5;                           
cin >> s5;
cout << "s5:"<< endl; 
cout <<"after clear:"<< cin.rdstate() << endl;
cout << "before while loop: there" << endl;
while((ch = cin.get()) != '\n')                    //输出内存中cin中的所有字符(cin有一部分内容残留)
  cout << "has char: " << ch << endl;              
cin >> s5;
cout << "s5 comes again:" << s5<< endl;
  return 0;

 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服