stringstream是继承stream来的,stringstream的功能类似于C 语言中的sprintf(), sscanf()这两个函数,即可以方便的实现数据类型和string类型之间的转换;
使用stringstream需要包含的头文件是<sstream>;
有意思的一点就是stringstream的重复使用问题,在重复使用之前需要调用一次它的clear()函数,这个问题,我更愿意去从它继承了stream这个角度去思考,stream在读文件结束或者遇到错误时,内部的流状态被置为错误,后续再读取流中的数据是失败的,使用clear即可以恢复到正常的状态;在下面的博客中就介绍了clear这个用法
搜索一下,发现一篇很详细的关于stringstream的用法介绍,网址就贴在这里了:
http://www.cppblog.com/Sandywin/archive/2007/07/13/27984.html
int test()
{
string tempStr;
int i,j;
while (getline(cin, tempStr))
{
stringstream strStream;
strStream.str(tempStr);
cout << strStream.str() << endl;
if (strStream >> i >> j) //通过判断返回的流状态是否正常来确定是否读取数据成功
{
cout << "strStream status is:" << strStream.good() << " i:" << i << " j:" << j << endl;
}
else
{
cout << "stringstream error" << endl;
}
}
return 0;
}