sstream知识点


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

1.istringstream的用法

在C++中有三个类ostringstream、istringstream、stringstream,包含在头文件中。

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

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

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

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

他们关系图如下:

      sstream知识点_第1张图片

各自的具体用法如下

1.istringstream

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

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

#include 
#include
using namespace std;

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

2.ostringstream

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

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

#include 
#include
using namespace std;

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

3.stringstream

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

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



你可能感兴趣的:(知识点)