1. 简介

这个头文件主要定义了基于字符串类(string类)的流4个模版

  • basic_stringbuf
  • basic_istringstream
  • basic_ostringstream
  • basic_stringstream

8个类型

  • istringstream
  • ostringstream
  • stringstream
  • stringbuf
  • wistringstream
  • wostringstream
  • wstringstream
  • wstringbuf

2. basic_stringbuf模版

basic_stringbuf 继承自basic_streambuf,由于它们的功能非常相似,所以它自身仅定义了少量的几个公有函数虚函数(虚函数不再赘述,详见此博客virtual函数小节)。

2.1 公有函数

  • str : 获取设置字符串缓冲区的内容。
  • operator =(移动语义) : 移动语义的赋值运算符。
  • swap : 交换两个对象内容。

2.2 全局模版函数

  • swap : 基本上每个标准类都回提供swap的两种形式:成员函数 和 全局模版。

3. 基于basic_stringbuf的流类

  1. basic_istringstream内部使用basic_stringbuf来存储和控制字符串内容。 它 继承自basic_istream
  2. basic_ostringstream内部使用basic_stringbuf来存储和控制字符串内容。 它继承自basic_ostream
  3. basic_ostringstream内部也使用basic_stringbuf来存储和控制字符串内容。 它继承自basic_iostream

因为很多功能都由基类提供了(面向对象的可重用性),这些模版只定义了几个相同的函数。

3.1 公有函数

  • rdbuf : 返回内部的basic_stringbuf对象指针。
  • str : 返回、设置字符串内容。
  • operator = (移动语义)
  • swap

3.2 全局模版函数

  • swap

4 typedefs

窄字符版本(char):

  • typedef basic_istringstream< char > istringstream;
  • typedef basic_ostringstream< char > ostringstream;
  • typedef basic_stringstream< char > stringstream;
  • typedef basic_stringbuf< char > stringbuf;

宽字符版本(wchar_t):

  • typedef basic_istringstream< wchar_t > wistringstream;
  • typedef basic_ostringstream< wchar_t > wostringstream;
  • typedef basic_stringstream< wchar_t > wstringstream;
  • typedef basic_stringbuf< wchar_t > wstringbuf;

C++ 头文件系列(sstream)的更多相关文章

  1. C++ 头文件系列(array)

    注意,该头文件仅在C++11中标准才开始出现. 简介 与语言内置的数组一样, array类模版支持几乎所有内置数组包含的特性: 顺序的(sequence) 内存连续的(contiguous stora ...

  2. C++ 头文件系列(queue)

    简介 这个头文件定义了两个跟队列有关的类----quque.priority_queue,分别实现的是队列 和 优先队列这两个概念. 但是与这两个类模版与其它类模版(vector.array等)最大的 ...

  3. C++ 头文件系列(stack)

    简介 该头文件只含有一个类模版stack, 它实现栈的概念,是一个容器适配器(说实话,在写这篇随笔之前我都不知道有这么个类模版). 栈 栈只有一个重要的特性: LIFO(last-in first-o ...

  4. C++ 头文件系列(vector)

    简介 vector头文件包含vector的类模版以及该模版的显示特化版本vector< bool >. vector是C++容器库中非常通用的一种容器,如果你不知道该决定使用哪一种容器,或 ...

  5. C++ 头文件系列(map)

    简介 该头文件包含两个概念相似的容器----map.multimap. 而这两个容器反映的概念就是 映射. 这两个容器 相同 的属性有: 关联性 映射 动态增长 键(Key)唯一性 这两个不相同的属性 ...

  6. C++ 头文件系列(unordered_map、unordered_set)

    简介 很明显,这两个头文件分别是map.set头文件对应的unordered版本. 所以它们有一个重要的性质就是: 乱序 如何乱序 这个unorder暗示着,这两个头文件中类的底层实现----Hash ...

  7. C++ 头文件系列(iterator)

    简介 该头文件围绕迭代器展开,定义了一系列与迭代器有关的概念,但最最最重要的一点就是----它和其它容器一起实现了C++容器的Iterator设计模式. Iterators are a general ...

  8. C++ 头文件系列 (algorithm)

    简介 algorithm头文件是C++的标准算法库,它主要应用在容器上. 因为所有的算法都是通过迭代器进行操作的,所以算法的运算实际上是和具体的数据结构相分离的 ,也就是说,具有低耦合性. 因此,任何 ...

  9. C++ 头文件系列 (bitset)

    简介 该头文件有关位集,实际上是vector 位 位本质上对应bool的概念,只有0或1,true或false两种对立的值. 但很可惜,字节才是机器上最小的存储单元,所以bool基本上是由一个字节大小 ...

随机推荐

  1. 企业证书APP发布流程

    企业发布app的 过程比app store 发布的简单多了,没那么多的要求,哈 但是整个工程的要求还是一样,比如各种像素的icon啊 命名规范啊等等. 下面是具体的流程 1.修改你的 bundle i ...

  2. ios UIKit动力 分类: ios技术 2015-07-14 12:55 196人阅读 评论(0) 收藏

    UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...

  3. js传递数组到后台

    //post方法不得行,各种问题...改为ajax就阔以了.//默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架, // ...

  4. 设置ubuntu下使用ls命令显示文件颜色显示

    文件颜色属性: # Attribute codes: 字符属性# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed#00无 ...

  5. imageX批量安裝windows7

    以一臺電腦爲sample,安裝完成windows os及其全部update,安裝全部常用軟件,打印機驅動,網絡磁碟機等. 關閉安全控制"UAC"和"維護解決方案" ...

  6. (转载)HTML、CSS、JavaScript、PHP、MySQL 的学习顺序是什么?

    文章转载自 鸟巢 - 技术分享的社区 http://t.runoob.com/question/13 1.HTML.CSS.JavaScript 前端学习三部曲,照着这个顺序依次学习 HTML教程.C ...

  7. XML 特殊字符处理和 CDATA

    在处理XML数据时,特殊字符要特殊处理,不能和节点字符混淆. 所有 XML 文档中的文本均会被解析器解析. 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略. PCDATA ...

  8. 浅谈Java分页技术

    话不多言.我们要实现java分页技术,我们首先就需要定义四个变量,他们是: int  pageSize;//每页显示多少条记录 int pageNow;//希望现实第几页 int pageCount; ...

  9. linux iptables 配置

    1.查看已有配置 iptables -L -n 2.清除原有规则. iptables -F        清除预设表filter中的所有规则链的规则 iptables -X        清除预设表f ...

  10. jQuery按键事件响应的Demo

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...