以前一直以为这两个就是一个样的,就名字的区别而已,今天编了个小程序,发现好象跟我想象的不大一样,请高手指点!
C/C++ code
#include
#include
#include
#include
using namespace std;
//将整型转换成字符型
string int_to_string(int i)
{
ostringstream os;
os< return os.str();
}
string int_to_string1(int i)
{
ostrstream os;
os< return os.str();
}
int main()
{
cout<
}
用第一个版本输出时是没问题的,
但用第2个版本时输出原来的整数后后面会出现一些中文!
~~~~~~~~~~~~~~~~~~~
另请教怎么把运行窗口里的内容发上来啊 .
[华 软 网]
编程论坛 1 个网友回答: 点运行窗口最左上角的图标
然后-->编辑-->标记-->选定-->回车
即可复制粘贴 .
[华 软 网]
编程论坛 2 个网友回答: istrstream类是从istream(输入流类)和strstreambase(字符串流基类)派生而来,ostrstream是从ostream(输出流类)和strstreambase(字符串流基类)派生而来,strstream则是从iostream(输入输出流类)和和strstreambASE(字符串流基类)派生而来。
istrstream类用于执行C风格的串流的输入操作,也就是以字符串数组作为输入设备。
ostrstream类用于执行C风格的串流的输出操作,也就是一字符串数组作为输出设备。
strstream类同时可以支持C风格的串流的输入输出操作。
.
[华 软 网]
编程论坛 3 个网友回答: 在C++有两种字符串流,一种在sstream中定义,
另一种在strstream中定义。
它们实现的东西基本一样。
strstream里包含
class strstreambuf;
class istrstream;
class ostrstream;
class strstream;
它们是基于C类型字符串char*编写的
sstream中包含
class istringstream;
class ostringstream;
class stringbuf;
class stringstream;
class …….
它们是基于std::string编写的
因此ostrstream::str()返回的是char*类型的字符串
而ostringstream::str()返回的是std::string类型的字符串
在使用的时候要注意到二者的区别,一般情况下推荐使用std::string类型的字符串
当然如果为了保持和C的兼容,使用strstream也是不错的选择。
.
[华 软 网]
编程论坛 4 个网友回答: 那istringstream和ostringstream类呢,
为什么第2个版本会打出多余的中文来啊
C/C++ code
20
20屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯葺葺
请按任意键继续. . .
.
[华 软 网]
编程论坛 5 个网友回答: ostrstream 是非标准的C++中的,是基于C语言中。
str()返回的char*类型,当然会有后面的中文啦 .
[华 软 网]
编程论坛 6 个网友回答: 三楼说了,ostrstream是char*风格的,输出时别忘了最后加上std::ends或者'/0'。
...
os < ... .
[华 软 网]
编程论坛 7 个网友回答: 学习了~
不过还是不太明白为什么返回char*类型就会有中文 .
[华 软 网]
编程论坛 8 个网友回答: 我觉得原因是返回char*,这个可能程序会一直找到'/0',所以会输出一大堆中文乱码,因为这是后面内存中的内容。。。
而要是返回string,肯定不会有类似的问题了。。。
不知道我说的对不对啊,呵呵!
欢迎转载,但请保留出处,本文章转自[华软网] 原文链接:http://www.huarw.com/program/C/c02/200905/1689096.html