zoukankan      html  css  js  c++  java
  • istringstream & ostringstream & stringstream

    #include <iostream>  
    #include <string>  
    #include <sstream>  
    using namespace std;  
    
    int main(int argc, char** argv)  
    {  
        int a;  
        string Str1, Str2;  
    
        /*=========================ISTRINGSTREAM=========================*/
        /* istringstream 对象用来把一个已定字符串中的以空格隔开的内容提取出来 */
        /* istringstream 只支持 >> 操作符 */
    
        string Input = "abc 123 bcd 456 sss 999";  
        istringstream iss(Input);//通过构造函数对istringstream类进行赋值,可以将一个字符串变量的值传递给istringstream对象  
        //若传入的字符串是常量,也可以进行如下赋值  
        //iss.str("ccc 555 aaa 333");  
        //扩展,iss对象支持对C语言流的操作,所以也可以进行如下的赋值  
        //iss.str(Input.c_str());
        while(iss >> Str1 >> a)  
            cout << Str1 << " " << a << endl;  
    
        /*=========================OSTRINGSTREAM=========================*/
        /* ostringstream 对象用来进行格式化的输出,可以方便的将各种类型转换为string类型 */  
        /* ostringstream 只支持 << 操作符 */ 
        //格式化输出  
        ostringstream oss;  
        oss << 3.14;  
        oss << " and ";  
        oss << 55555555;  
        oss << endl;  
        cout << oss.str();  
    
        //int, float, double型转化为字符串  
        oss.str("");//每次使用前清空,oss.clear() 并不能清空内存  
        oss.clear();
        oss.precision(9);
        oss << 3.123456789;  
        Str2 = oss.str();  
        cout << Str2 << endl;  
    
        /*=========================STRINGSTREAM=========================*/
        //stringstream类  
        //该类就是上述istringstream和ostringstream类的综合,支持<<, >>操作符,可以进行字符串到其它类型的快速转换  
        stringstream ss;  
        ss << Input;  
        while(ss >> Str1 >> a)  
        {  
            cout << Str1 << " " << a << endl;  
        }
    
        //总结这几个类istringstream, ostringstream, stringstream, 包含在<sstream>文件里  
        //输入方式:  
        //1.构造函数。iss, oss, ss 都支持。eg. istreamstring iss(Input), ostreamstring(Input), stringstream ss(Input)  
        //2.<< 操作符。oss, ss 支持。 oss << Input, ss << Input;  
        //3. .Str()函数,提供C中的字符串头指针,或者匿名内存首地址  
        // eg. iss.str(Input.c_str()), iss.str("abc 123 345")  
        //      oss.str(Input.c_str()), oss.str("abc 123 345")  
        //      ss.str(Input.c_str()), ss.str("abc 123 345")  
    
    
        //输出方式:  
        //1. 通过.str()得到一份拷贝  
        //eg. Str1 = iss.str(), Str1 = oss.str(), Str1 = ss.str();  
        // 显然,这个也提供C语言的接口  
        // printf("%s", iss.str().c_str()), printf("%s", oss.str().c_str()), printf("%s", ss.str().c_str())  
        //2. >>操作符, iss和ss支持该操作  
    
        //每次不同的使用时刻必须要清空  
        //ss.str(""), iss.str(""), oss.str(""),暂时没有发现其它的清空方法  
    
        //最大的用处  
        //输入string类型,可以通过iss 或 ss 类提取出来,功能类似于C语言中的sscanf()函数, 在TC中比较常见  
        //提供字符串和各种类型之间的转换 
    
        return 0;  
    }  
  • 相关阅读:
    flash 的跑到模型(转)
    (转载)GC调用时机,特殊内存回收时机,及调试时强制GC
    C语言面试那些事儿──一道指针与数组问题
    【原创】Performanced C++ 经验规则 第五条:再谈重载、覆盖和隐藏
    【原创】Performanced C++ 经验规则 第二条:你不知道的构造函数(中)
    算法探讨——Top K算法详细解析(转载)
    【原创】Performanced C++ 经验规则 目录
    【原创】Performanced C++ 经验规则 第四条:静态和多态,亦敌亦友
    Mac OS X Git安装教程
    【原创】Performanced C++ 经验规则 第三条:你不知道的构造函数(下)
  • 原文地址:https://www.cnblogs.com/haba/p/3406090.html
Copyright © 2011-2022 走看看