stringstream的基本用法

stringstream是字符串流。它将流与存储在内存中的string对象绑定起来。

在多种数据类型之间实现自动格式化。

1 stringstream对象的使用

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;
}<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>

输入:shanghai no1 school 1989

输出:shanghi no1 school 1989

      shanghai

    no1

    school

    1989

2stringstream提供的转换和格式化

 #include <sstream>
 #include <iostream>
  using namespace std;
  int main()
  {
      int val1 = 512,val2 = 1024;
      stringstream ss;
  
      //将int类型读入ss,变为string类型
      ss<<"val1: "<<val1<<endl //"vall:"此处有空格,字符串流是通过空格判断一个字符串的结束
      <<"val2: "<<val2<<endl;
      cout<<ss.str();
      string dump;
      int a,b;
 
      //提取512,1024保存为int类型。当然,如果a,b声明为string类型
      //那么这两个字面值常量相应保存为string类型
      ss>>dump>>a>>dump>>b;
      cout<<a<<" "<<b<<endl;
      return 0;
}

输出为:val1: 512

    val2: 1024

    512 1024

3其他注意

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

#include <cstdlib>
#include <sstream>
#include <iostream>
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;
    return 0;
}

输出:

size of stream = 19

s: shanghai

size of stream = 0

stringstream使用代码示例
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值