美文网首页
c++标准库

c++标准库

作者: __bba3 | 来源:发表于2020-07-02 08:30 被阅读0次

    <sstream>库

    • <sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。
    • 基于该类的转换拥有类型安全和不会溢出的特性。还可以通过重载来支持自定义类型间的转换。
    • 如果你打算在多次转换中使用同一个流对象,记住再每次转换前要使用clear()方法;
    <1>ostringstream

    int、long、double等类型转换成字符串string类型。

    template<class T>
    void to_string(string & result,const T& t){
        ostringstream oss;//创建一个流
        oss<<t;//把值传递如流中
        result=oss.str();//获取转换后的字符转并将其写入result
    }
    
    <2>stringstream

    任意类型之间的转换。将in_value值转换成out_type类型

    template<class out_type,class in_value>
    out_type convert(const in_value & t){
        stringstream stream;
        stream<<t;//向流中传值
        out_type result;//这里存储转换结果
        stream>>result;//向result中写入值
        return result;
    }
    
    <3>istringstream

    字符串转基本类型

    istringstream iss;
    iss.str("123");//或者直接构造  istringstream iss2("123 456");
    int n;
    iss >> n;
    

    >>以空格为界。会把输入的流用空格分隔开。

       while(iss2>>str){//每次读取一个单词(以空格为界),存入str中 
            cout << str<<","; 
       }//123 456
    
    <4>实例
    • 基本数据类型转换。int转string
        int n = 100;
        string str;
        //使用stringstream
        stringstream ss;
        ss << n;
        ss >> str;
        cout << str << endl;
        //使用ostringstream
        ostringstream oss;
        oss << n;
        str = oss.str();
        cout << str << endl;
    
    • char *的转换
    std::stringstream stream;
    char result[8] ;
    stream << 8888; //向stream中插入8888
    stream >> result; //抽取stream中的值到result
    std::cout << result << std::endl; // 屏幕显示 "8888"
    
    • 多次转换
      多次转换时必须调用stringstream的成员函数clear().
    std::stringstream stream;
    int first, second;
    stream<< "456"; //插入字符串
    stream >> first; //转换成int
    std::cout << first << std::endl;
    stream.clear(); //在进行多次转换前,必须清除stream
    stream << true; //插入bool值
    stream >> second; //提取出int
    std::cout << second << std::endl;
    

    相关文章

      网友评论

          本文标题:c++标准库

          本文链接:https://www.haomeiwen.com/subject/cukofktx.html