• stringstream的用法


    stringstream的基本用法

    stringstream是字符串流。它将流与存储在内存中的string对象绑定起来。
    在多种数据类型之间实现自动格式化。

    1.stringstream对象的使用

    #include<sstream>
    #include<iostream>
    using namespace std;
    int main()
    {
    string line,word;
    while(getline(cin,line))
    {
    stringstream stream(line);
    cout<<stream.str()<<endl;
    while(stream>>word){cout<<word<<endl;}
    }
    return 0;
    }

    输入:shanghai no1 school 1989
    输出:shanghi no1 school 1989
       shanghai
        no1
        school
        1989

    2.stringstream提供的转换和格式化
    程序:

    #include<sstream>
    #include<iostream>
    using namespace std;
    int main()
    {
    int val1 = 512,val2 =1024;
    stringstream ss;
    ss<<"val1: "<<val1<<endl //“val1: "此处有空格,字符串流是通过空格判断一个字符串的结束
         <<"val2: "<<val2<<endl;
    cout<<ss.str();

    string dump;
    int a,b;
    ss>>dump>>a
         >>dump>>b;
    cout<<a<<" "<<b<<endl;
    return 0;
    }

    输出为:val1: 512
        val2: 1024
        512 1024
    第一处黑体字部分:将int类型读入ss,变为string类型
    第二处黑体字部分:提取512,1024保存为int类型。当然,如果a,b声明为string类型,那么这两个字面值常量相应保存为string类型

    3.其他注意
    stringstream不会主动释放内存(或许是为了提高效率),但如果要在程序中用同一个流,反复读写大量的数据,将会造成大量的内存消 耗,因些这时候,需要适时地清除一下缓冲 (用 stream.str("") )

    #include <cstdlib>
    #include<iostream>
    #include<sstream>
    using namespace std;
    int main()
    {
    stringstream ss;
    string s;
    ss<<"shanghai no1 school";
    ss>>s;
    cout<<"size of stream = "<<ss.str().length()<<endl;
    cout<<"s: "<<s<<endl;
    ss.str("");
    cout<<"size of stream = "<<ss.str().length()<<endl;
    }

    输出:
    size of stream = 19
    s: shanghai
    size of stream = 0

  • 相关阅读:
    数据结构实践——败者树归并模拟
    systemctl介绍
    Andriod Atom x86模拟器启动报错。
    (白书训练计划)UVa 11572 Unique Snowflakes(窗体滑动法)
    OpenCV2.3.1在CentOS6.5下的安装
    本学期课程教学要解决这个问题要点备忘录
    firefox浏览器和IE
    [LeetCode] Validate Binary Search Tree
    android性能优化优秀文章
    如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10782137.html
Copyright © 2020-2023  润新知