QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
190
查看: 118|回复: 9

stringstream

[复制链接]
最佳答案
0 
累计签到:62 天
连续签到:62 天
月满霜华 发表于 2017-11-12 23:23:18 From FishC Mobile 1189 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有谁知道C++里面的stringstream和文件的输入输出有啥区别啊?怎么使用?百度上说啥内存层的输入输出。。我靠什么鬼啊!!!大佬来拉菜鸟一把
楼层
跳转到指定楼层
最佳答案
208 
累计签到:159 天
连续签到:8 天
BngThea 发表于 2017-11-13 07:42:58 From FishC Mobile | 显示全部楼层
什么区别?两者本来就不是一样的。stream里面就包含了iostream和strstream
最佳答案
0 
累计签到:62 天
连续签到:62 天
月满霜华  楼主| 发表于 2017-11-14 01:37:48 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-11-13 07:42
什么区别?两者本来就不是一样的。stream里面就包含了iostream和strstream

stringstream这是C++里面的,iostream是C语言里面的
最佳答案
208 
累计签到:159 天
连续签到:8 天
BngThea 发表于 2017-11-14 06:57:33 From FishC Mobile | 显示全部楼层
月满霜华 发表于 2017-11-14 01:37
stringstream这是C++里面的,iostream是C语言里面的

初学c++最常用的include指令是什么
最佳答案
0 
累计签到:62 天
连续签到:62 天
月满霜华  楼主| 发表于 2017-11-14 08:40:05 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-11-14 06:57
初学c++最常用的include指令是什么

stdio.h啊,不过stringstream是在sstream头文件里面
最佳答案
208 
累计签到:159 天
连续签到:8 天
BngThea 发表于 2017-11-14 08:51:22 | 显示全部楼层
月满霜华 发表于 2017-11-14 08:40
stdio.h啊,不过stringstream是在sstream头文件里面

c++控制输入输出的不是<iostream>?
你确定你学的是C++?
最佳答案
2 
累计签到:43 天
连续签到:1 天
U201010009 发表于 2017-11-14 09:43:38 | 显示全部楼层
BngThea 发表于 2017-11-14 08:51
c++控制输入输出的不是?
你确定你学的是C++?

大佬,您列个stream,stringstream,fstream的关系图出来吧,也学习下。
最佳答案
0 
累计签到:62 天
连续签到:62 天
月满霜华  楼主| 发表于 2017-11-14 09:54:30 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-11-14 08:51
c++控制输入输出的不是?
你确定你学的是C++?

我确定,iostream是输入输出没毛病,但stringstream更单纯,更安全,专用于字符流转换,以及输入输出,它是封装在sstream.h头文件里面的,默认为stringstream(string str){}他可以像C语言里面的istringstream那样从一个字符串中读取字符(调用put方法),也可以像ostringstream那样向一个字符串里插入字符(>>)
最佳答案
2 
累计签到:43 天
连续签到:1 天
U201010009 发表于 2017-11-14 15:32:12 | 显示全部楼层
本帖最后由 U201010009 于 2017-11-14 15:43 编辑

C语言标准中没有stringstream.h的头文件(据我所知),是C++的头文件stringstream
Header: <sstream>
Namespace: std

根据VS的msdn帮助文档里查到的fstream和sstream的信息如下:

----------------------------------------------fstream------------------------------------------------------------------------------
fstream ---> typedef basic_fstream<char, char_traits<char> > fstream

basic_fstream --->
template <class Elem, class Tr = char_traits<Elem> >
    class basic_fstream : public basic_filebuf<Elem, Tr>
描述一个对象,它使用类basic_filebuf <Elem,Tr>的流缓冲区控制元素和编码对象的插入和提取,元素的类型为Elem,其特征由类Tr确定。

basic_filebuf --->
template <class Elem, class Tr = char_traits<Elem> >
    class basic_filebuf : public basic_streambuf<Elem, Tr>
描述了一个流缓冲区,它控制Elem类型的元素的传输,这些元素的特征由类Tr确定,与外部文件中存储的元素序列相交。



----------------------------------------------sstream-------------------------------------------------------------------------------

sstream
定义了几个模板类,它们支持存储在已分配数组对象中的序列的iostream操作,stringstream是其中之一。

stringstream ---> typedef basic_stringstream<char> stringstream

basic_stringstream --->
template <
   class Elem,
   class Tr = char_traits<Elem>,
   class Alloc = allocator<Elem>
>
   class basic_stringstream : public basic_stringbuf<Elem, Tr>
描述一个对象,它使用basic_stringbuf<Elem,Tr,Alloc>类的流缓冲区控制元素和编码对象的插入和提取。


basic_stringbuf --->
template <class Elem, class Tr = char_traits<Elem>,
   class Alloc = allocator<Elem>
>
   class basic_stringbuf : public basic_streambuf<Elem, Tr>
描述了一个流缓冲区,它控制Elem类型元素的传输,它的字符特征由类Tr确定,与数组对象中存储的一系列元素进行传输。



fstream和sstream的区别可以参考basic_filebuf和basic_stringbuf的区别。
使用方法可以在msdn上找到用例。
fstream用例(https://msdn.microsoft.com/zh-cn/library/a33ahe62.aspx
sstream用例(http://www.usidcbbs.com/read-htm-tid-1898.html)(在msdn上暂未找到用例,所以在网上找的用例)
   
最佳答案
0 

尚未签到

一去二悄悄 发表于 2017-11-14 20:47:03 From FishC Mobile | 显示全部楼层
推荐你看一下《C++Primer》,IO库那一节有很详细的讲解

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-11-25 06:20

快速回复 返回顶部 返回列表