第一种情况:输出正常
#include <isotream>
#include <sstream>
#include <string>
using namespce std;
string intToString(int a)
{
ostringstream ostr;
ostr<<hex<<100;
string str = ostr.str();
cout<<str;
return str;
}
第二种情况:输出有乱码
#include <isotream>
#include <sstream>
#include <string>
using namespce std;
string intToString(int a)
{
ostrstream ostr;
ostr<<hex<<100;
string str = ostr.str();
cout<<str;
return str;
}
==========================================================================
ostrstream:是从ostream(输出流类)和strstreambase(字符串流基类)派生而来的
istrstream:是从istream(输入流类)和strstreambase(字符串流基类)派生而来的
strstream:是从iostream(输入输出流类)和strstreambase(字符串流基类)派生而来的
istrstream类用于执行c风格的串流的输入操作,也就是一字符串数组作为输入设备
ostrstream类用于执行c风格的串流的输入操作,也就是一字符串数组作为输入设备
strstream类用于执行c风格的串流输入输出操作。
ostringstream
istringstream
在c++有两种字符串流,一种是在 sstream中定义,一种是在strstream中定义,他们的实现基本都一样。
strstream里包含:
class strstrambuf;
class istrstream
class ostrstream;
class strstream;
他们是基于c字符串char *编写的。
sstream中包含:
class istringstream
class ostringstream
class stringbuf
class stringstream
他们是基于std::string编写的
因此ostringstream::str()返回的是std::string类型的字符串,ostrstream::str()返回的是char *类型的字符串
在使用的时候要注意二者的区别。一般情况下推荐使用std::string类型的字符串