鱼C论坛

 找回密码
 立即注册
查看: 2970|回复: 9

stringstream

[复制链接]
发表于 2017-11-12 23:23:18 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
有谁知道C++里面的stringstream和文件的输入输出有啥区别啊?怎么使用?百度上说啥内存层的输入输出。。我靠什么鬼啊!!!大佬来拉菜鸟一把
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-13 07:42:58 From FishC Mobile | 显示全部楼层
什么区别?两者本来就不是一样的。stream里面就包含了iostream和strstream
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-14 01:37:48 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-11-13 07:42
什么区别?两者本来就不是一样的。stream里面就包含了iostream和strstream

stringstream这是C++里面的,iostream是C语言里面的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-14 06:57:33 From FishC Mobile | 显示全部楼层
月满霜华 发表于 2017-11-14 01:37
stringstream这是C++里面的,iostream是C语言里面的

初学c++最常用的include指令是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-14 08:40:05 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-11-14 06:57
初学c++最常用的include指令是什么

stdio.h啊,不过stringstream是在sstream头文件里面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-14 08:51:22 | 显示全部楼层
月满霜华 发表于 2017-11-14 08:40
stdio.h啊,不过stringstream是在sstream头文件里面

c++控制输入输出的不是<iostream>?
你确定你学的是C++?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-14 09:43:38 | 显示全部楼层
BngThea 发表于 2017-11-14 08:51
c++控制输入输出的不是?
你确定你学的是C++?

大佬,您列个stream,stringstream,fstream的关系图出来吧,也学习下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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那样向一个字符串里插入字符(>>)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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上暂未找到用例,所以在网上找的用例)
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-14 20:47:03 From FishC Mobile | 显示全部楼层
推荐你看一下《C++Primer》,IO库那一节有很详细的讲解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 02:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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