sstream知识点


用sstream这个库的优势就在于存入类型的数据可以直接进行转换,并且不用担心缓冲区的溢出现象,因为这些对象会根据需要自动分配空间。

1.istringstream的用法

在C++中有三个类ostringstream、istringstream、stringstream,包含在头文件<sstream.h>中。

istringstream类用于执行C++风格的串流的输入操作。

ostringstream类用于C风格的串流的输出操作。

stringstream类同时可以支持C风格的串流的输入输出操作。

istringstream类是从istream和stringstreambase派生而来,ostringstream是从ostream和stringstreambase派生而来, stringstream则是从iostream类和stringstreambase派生而来。

他们关系图如下:

      

各自的具体用法如下

1.istringstream

构造函数原形:istringstream::istringstream(string str);

该函数即对字符串进行读取,如下面的例子istr中,分开读取,当碰到空格后即进行分割,对应的类型要读取到相应类型的变量中。

#include <iostream>
#include<sstream>
using namespace std;

int main()
{
    istringstream istr("100 0.123456 abc");
    string s;
    while(istr>>s)
        cout<<s<<endl;
    int a;
    double b;
    istr>>a>>b>>s;
    cout<<a<<endl<<b<<endl<<s<<endl;
    return 0;
}

2.ostringstream

构造函数原形:ostringstream::ostringstream(string str);

它的功能主要是向一个string中插入字符,可以通过put函数或者左移操作符来插入,但需要注意的是,如果插入前已经调用构造函数使串里有了一定长度的字符串,那么当插入时,不是在原有字符串基础上直接进行插入,而是按顺序依次修改原来的字符,如果插入字符后,使字符串长度超出原有字符串长度时,则增加长度。

#include <iostream>
#include<sstream>
using namespace std;

int main()
{
    ostringstream ostr("abcder");
    ostr.put('d');
    ostr.put('e');
    ostr<<"fg";
    string gstr=ostr.str();
    cout<<gstr<<endl;
    return 0;
}

3.stringstream

构造函数的原形:stringstream::stringstream(string str);

相当于即包含了istringstream又包含了ostringstream。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值