首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 头文件sstream,stringstream的区别 [已结贴,结贴人:xqfone]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xqfone
    • 等级:
    发表于:2008-04-24 21:59:17 楼主
    以前一直以为这两个就是一个样的,就名字的区别而已,今天编了个小程序,发现好象跟我想象的不大一样,请高手指点!
    C/C++ code
    #include <iostream> #include <sstream> #include <string> #include <strstream> using namespace std; //将整型转换成字符型 string int_to_string(int i) { ostringstream os; os<<i; return os.str(); } string int_to_string1(int i) { ostrstream os; os<<i; return os.str(); } int main() { cout<<int_to_string(20)<<endl; cout<<int_to_string1(20)<<endl; return 0; }


    用第一个版本输出时是没问题的,
    但用第2个版本时输出原来的整数后后面会出现一些中文!

    ~~~~~~~~~~~~~~~~~~~
    另请教怎么把运行窗口里的内容发上来啊
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zgjxwl
    • 等级:
    发表于:2008-04-24 22:15:361楼 得分:5
    点运行窗口最左上角的图标
    然后-->编辑-->标记-->选定-->回车
    即可复制粘贴
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-24 22:19:272楼 得分:3
    istrstream类是从istream(输入流类)和strstreambase(字符串流基类)派生而来,ostrstream是从ostream(输出流类)和strstreambase(字符串流基类)派生而来,strstream则是从iostream(输入输出流类)和和strstreambase(字符串流基类)派生而来。

    istrstream类用于执行C风格的串流的输入操作,也就是以字符串数组作为输入设备。 
      ostrstream类用于执行C风格的串流的输出操作,也就是一字符串数组作为输出设备。 
      strstream类同时可以支持C风格的串流的输入输出操作。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iu_81
    • 等级:
    发表于:2008-04-24 22:24:223楼 得分:10
    在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也是不错的选择。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xqfone
    • 等级:
    发表于:2008-04-24 22:25:334楼 得分:0
    那istringstream和ostringstream类呢,

    为什么第2个版本会打出多余的中文来啊

    C/C++ code
    20 20屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯葺葺 请按任意键继续. . .
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-24 22:30:055楼 得分:2
    ostrstream 是非标准的C++中的,是基于C语言中。

    str()返回的char*类型,当然会有后面的中文啦
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-05 09:33:506楼 得分:0
    三楼说了,ostrstream是char*风格的,输出时别忘了最后加上std::ends或者'\0'。
        ...
        os < <i < <std::ends;
        ...
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved