stringstream的几个使用注意

在C++中可以使用stringstream来很方便的进行类型转换,字符串串接,但是还有有几个地方需要注意的,之前没有注意过,今天打了一个简单的demo做备忘

//
//  main.cpp
//  222
//
//  Created by Damon on 15/12/17.
//  Copyright © 2015年 Damon. All rights reserved.
//

#include <iostream>
#include <sstream>
using namespace std;
int main(int argc, const char * argv[]) {
    stringstream oss;
    oss<<1;
    oss<<2;
    cout<<"step1: "<<oss.str()<<endl;       //12
    oss<<3<<4;
    cout<<"step2: "<<oss.str()<<endl;       //1234 执行的拼接
    oss.str("");                            //清空
    
    oss.str("2");                           //也可以这样清空
    cout<<"step3: "<<oss.str()<<endl;       //2

    oss<<3;
    cout<<"step4: "<<oss.str()<<endl;       //3 并没有拼接

    
    int i = 0;
    oss>>i;                                 //转换类型转换为int
    cout<<"step5: "<<i<<endl;               //流出到i,输出3
    
    
    oss.str("4");
    int n= 0;
    oss>>n;
    cout<<"step5: "<<oss.str()<<endl;
    cout<<"step6: "<<n<<endl;               //虽然oss.str()是4 已经流出,现在输出0
    
    oss.clear();                            //必须先清除之前状态
    oss.str("5");
    cout<<"step7: "<<oss.str()<<endl;       //5
    string m;
    oss >> m;
    cout<<"step8: "<< m <<endl;             //可以正常流出
    
    return 0;
}

输出内容

step1: 12
step2: 1234
step3: 2
step4: 3
step5: 3
step5: 4
step6: 0
step7: 5
step8: 5
Program ended with exit code: 0

Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

Leave a Comment