zoukankan      html  css  js  c++  java
  • stringstream的状态如何影响数据交互

    用stringstream给字符串赋值

    发现和想的不一样

    简单地说,罢工了

    推敲出以下例子,以后给我乖乖工作!:D

    #include <iostream>
    #include <sstream>
    #include <bitset>
    
    using namespace std;
    
    string getState(stringstream& ss) {
        ostringstream os;
        //显示数据和三个标志位(badbit、failbit、eofbit)
        os << ss.str() << "(bfe:" << std::bitset<3>(ss.rdstate()) << ")";
        return os.str();
    }
    
    void main() {
        stringstream ss;
        string s1;
    
        ss.str("aa");
        cout << getState(ss) << endl; // aa(bfe:000)
        ss << "a11";
        cout << getState(ss) << endl; //a11(bfe:000) //初始值在数据流入的时候,被覆盖
        ss << " a22";
        cout << getState(ss) << endl; //a11 a22(bfe:000) //现在正常流入数据
        ss >> s1;
        cout << getState(ss) << ", " << s1 << endl;//a11 a22(bfe:000), a11 //输出第1个数据
        ss << " a33";
        cout << getState(ss) << endl; //a11 a22 a33(bfe:000)
        ss >> s1;
        cout << getState(ss) << ", " << s1 << endl;//a11 a22 a33(bfe:000), a22 //输出第2个数据
        ss >> s1;
        cout << getState(ss) << ", " << s1 << endl;//a11 a22 a33(bfe:001), a33 //数据全部输出,eof位变成1,罢工啦
    
        ss << " a44";
        cout << getState(ss) << endl;//a11 a22 a33(bfe:101) //罢工以后拒绝接收数据,bad位也是1啦
    
        s1 = "<none>";
        ss >> s1;
        cout << getState(ss) << ", " << s1 << endl;//a11 a22 a33(bfe:111), <none> //罢工了也不会输出数据,fail位也变成1
    
        ss.clear(); //重置流状态,并不会清除数据
        cout << getState(ss) << endl;//a11 a22 a33(bfe:000) //开工!
    
        ss << " a55";
        cout << getState(ss) << endl;//a11 a22 a33 a55(bfe:000)
    
        ss >> s1;
        cout << getState(ss) << ", " << s1 << endl;//a11 a22 a33 a55(bfe:001), a55 //并不会重头开始取数据
    
        system("pause");
    }
  • 相关阅读:
    知乎高赞:假如我有500w存进余额宝,可以每天坐着等吃吗?
    为什么想举办一场 中国深圳•测试开发大会
    2020 年互联网大厂薪资出炉!老夫酸了.......
    再见,我亲手创办的公司
    互联网公司的年会也太太太刺激了吧!
    python环境安装及配置
    Python isdigit()方法
    购物车程序优化2
    python中常见的报错信息
    pycharm中的快捷键
  • 原文地址:https://www.cnblogs.com/sqxy110/p/5054185.html
Copyright © 2011-2022 走看看