C++ stringstream介绍,使用方法与例子

转载 2015年11月19日 16:24:56

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。

  istringstream类用于执行C++风格的串流的输入操作。 
ostringstream类用于执行C风格的串流的输出操作。 
strstream类同时可以支持C风格的串流的输入输出操作。

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

  他们的继承关系如下图所示:

std::stringstream用法 - 505373805 - 505373805的博客

  istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。 
istringstream的构造函数原形如下: 
istringstream::istringstream(string str);


#i nclude <iostream
#i nclude <sstream
using namespace std; 
int main()   

istringstream istr; 
istr.str("1 56.7",); 
    //上述两个过程可以简单写成 istringstream istr("1 56.7"); 
    cout << istr.str()<<endl; 
    int a; 
    float b; 
istr>>a; 
    cout<<a<<endl; 
istr>>b; 
    cout<<b<<endl; 
system("pause"); 
}

  上例中,构造字符串流的时候,空格会成为字符串参数的内部分界,例子中对a,b对象的输入"赋值"操作证明了这一点,字符串的空格成为了整型数据与浮点型数据的分解点,利用分界获取的方法我们事实上完成了字符串到整型对象与浮点型对象的拆分转换过程。

  str()成员函数的使用可以让istringstream对象返回一个string字符串(例如本例中的输出操作(cout<<istr.str();)。

  ostringstream同样是由一个string对象构造而来,ostringstream类向一个string插入字符。 
ostringstream的构造函数原形如下: 
ostringstream::ostringstream(string str); 

示例代码如下:


#i nclude <iostream
#i nclude <sstream
#i nclude <string
using namespace std; 
int main()   

ostringstream ostr; 
    //ostr.str("abc");//如果构造的时候设置了字符串参数,那么增长操作的时候不会从结        尾开始增加,而是修改原有数据,超出的部分增长 
ostr.put('d'); 
ostr.put('e'); 
ostr<<"fg"; 

    string gstr = ostr.str(); 
    cout<<gstr; 
system("pause"); 
}

   在上例代码中,我们通过put()或者左移操作符可以不断向ostr插入单个字符或者是字符串,通过str()函数返回增长过后的完整字符串数据,但值 得注意的一点是,当构造的时候对象内已经存在字符串数据的时候,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长。
[ basic_stringbuf::str : 
Sets or gets the text in a string buffer without changing the write position. ]

  对于stringstream了来说,不用我多说,大家也已经知道它是用于C++风格的字符串的输入输出的。 
stringstream的构造函数原形如下:

  stringstream::stringstream(string str);

  示例代码如下:


#i nclude <iostream
#i nclude <sstream
#i nclude <string
using namespace std; 

int main()   

stringstream ostr("ccc"); 
ostr.put('d'); 
ostr.put('e'); 
ostr<<"fg"; 
string gstr = ostr.str(); 
cout<<gstr<<endl; 

char a; 
ostr>>a; 
cout<<a 

system("pause"); 
}

  除此而外,stringstream类的对象我们还常用它进行string与各种内置类型数据之间的转换。 

示例代码如下:


#i nclude <iostream
#i nclude <sstream
#i nclude <string
using namespace std; 

int main()   

stringstream sstr; 
//--------int转string----------- 
int a=100; 
string str; 
sstr<<a; 
sstr>>str; 
cout<<str<<endl; 
//--------string转char[]-------- 
sstr.clear();//如果你想通过使用同一stringstream对象实现多种类型的转换,请注意在每一次转换之后都必须调用clear()成员函数。 
string name = "colinguan"; 
char cname[200]; 
sstr<<name; 
sstr>>cname; 
cout<<cname; 
system("pause"); 
}

(转)C++ stringstream介绍,使用方法与例子

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。   istringstream类用于...

C++ stringstream介绍,使用方法与例子

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。   istringstream类用于...

转)C++ stringstream介绍,使用方法与例子

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。   istringstream类用于...
  • cwzhsi
  • cwzhsi
  • 2014年10月10日 09:45
  • 358

C++ stringstream介绍,使用方法与例子

From: http://www.usidcbbs.com/read-htm-tid-1898.html C++引入了ostringstream、istringstream、string...

C++ stringstream介绍,使用方法与例子

今天在学STL中 (集合:set)时,发现stringstream,然而并不知道什么意思。 经过网上的查询,才知道是一种输入输出流,由于刚接触,感觉这博文感觉很有 帮助,所以转载,供以后使...

C++ stringstream介绍,使用方法与例子

C++ stringstream介绍,使用方法与例子 分类: Win_C++ Linux_C++2011-12-01 22:57 839人阅读 评论(0) 收藏 举报 From...

C++ stringstream介绍,使用方法与例子

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。   istringstream类用于执行...

(转)C++ stringstream介绍,使用方法与例子

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。   istringstream类用于...

C++中stringstream的使用方法和样例

之前在leetcode中进行string和int的转化时使用过istringstream,现在大致总结一下用法和测试用例。     介绍:C++引入了ostringstream、istringstre...

stringstream的使用方法

使用stringstream对象简化类型转换 C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。...
  • wowowoc
  • wowowoc
  • 2014年09月03日 20:13
  • 313
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ stringstream介绍,使用方法与例子
举报原因:
原因补充:

(最多只允许输入30个字)