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. objective-c之各种数值

    各种数值 NSArray和NSDictionary都只能存储对象,不能存储任何基本类型的数据,如int,float,struct.因此我们可以用对象来封装基本的数值. NSNumber Cocoa提供 ...

  2. 获取url参数和时间格式化

    1. 获取url参数: var url = request("url"); //获取url参数 function request(paras) { //decodeURI() 函数 ...

  3. IOS开发-OC学习-kvc,kvo

    kvc是用来方便的设置实例的属性值的,比如person类的实例p1有一个name的属性,那么我们可以通过kvc去设置p1的name,语法是: [ 对象 setValue:@"xiaming& ...

  4. Windows显示不了磁盘

    ps:当我的磁盘插电脑上却显示不了磁盘信息.终于最后将我的200G资料,搞没了,也不能恢复了..刚刚磁盘显示了,为了让更多人能不走弯路,我结合了网络能让磁盘显示的几个经验,也便大家方便参考...   ...

  5. Microsoft Visual 的变态

    Microsoft Visual 里面使用指针 的时候, 声明要放在函数开始的位置,否则报错,真变态啊 刚刚发现,C的变量必须在语块开始声明,后面声明会报错,太不灵活了

  6. asp.net实现断点续传

    C# 断点续传原理与实现 在了解HTTP断点续传的原理之前,让我们先来了解一下HTTP协议,HTTP协议是 一种基于tcp的简单协议,分为请求和回复两种.请求协议是由 客户机(浏览器)向服务器(WEB ...

  7. UVa 10653 - Bombs! NO they are Mines!!

    题目大意:给你一个二维迷宫,给定入口和出口,找出最短路径. 无权图上的单源最短路,用BFS解决. #include <cstdio> #include <queue> #inc ...

  8. UVa 10667 - Largest Block

    题目大意:这个也是和UVa 836 - Largest Submatrix差不多,修改一下数据就可以套用代码的. #include <cstdio> #include <cstrin ...

  9. 使用nodejs爬取和讯网高管增减持数据

    为了抓取和讯网高管增减持的数据,首先得分析一下数据的来源: 网址: http://stockdata.stock.hexun.com/ggzjc/history.shtml 使用chrome开发者工具 ...

  10. osgearth介绍(转载)-feature_labels.earth

    初识osg OSG的诞生 在 1997 年时,Don Burns 由于喜欢滑翔机运动且对计算机图形学非常熟悉,在 LINUX 上写了一个控制滑翔机的小引擎,这便是 OSG 的最初雏形.后来在 1998 ...