C++ 头文件系列(sstream)
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的流类
- basic_istringstream内部使用basic_stringbuf来存储和控制字符串内容。 它 继承自basic_istream。
- basic_ostringstream内部使用basic_stringbuf来存储和控制字符串内容。 它继承自basic_ostream。
- 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)的更多相关文章
- C++ 头文件系列(array)
注意,该头文件仅在C++11中标准才开始出现. 简介 与语言内置的数组一样, array类模版支持几乎所有内置数组包含的特性: 顺序的(sequence) 内存连续的(contiguous stora ...
- C++ 头文件系列(queue)
简介 这个头文件定义了两个跟队列有关的类----quque.priority_queue,分别实现的是队列 和 优先队列这两个概念. 但是与这两个类模版与其它类模版(vector.array等)最大的 ...
- C++ 头文件系列(stack)
简介 该头文件只含有一个类模版stack, 它实现栈的概念,是一个容器适配器(说实话,在写这篇随笔之前我都不知道有这么个类模版). 栈 栈只有一个重要的特性: LIFO(last-in first-o ...
- C++ 头文件系列(vector)
简介 vector头文件包含vector的类模版以及该模版的显示特化版本vector< bool >. vector是C++容器库中非常通用的一种容器,如果你不知道该决定使用哪一种容器,或 ...
- C++ 头文件系列(map)
简介 该头文件包含两个概念相似的容器----map.multimap. 而这两个容器反映的概念就是 映射. 这两个容器 相同 的属性有: 关联性 映射 动态增长 键(Key)唯一性 这两个不相同的属性 ...
- C++ 头文件系列(unordered_map、unordered_set)
简介 很明显,这两个头文件分别是map.set头文件对应的unordered版本. 所以它们有一个重要的性质就是: 乱序 如何乱序 这个unorder暗示着,这两个头文件中类的底层实现----Hash ...
- C++ 头文件系列(iterator)
简介 该头文件围绕迭代器展开,定义了一系列与迭代器有关的概念,但最最最重要的一点就是----它和其它容器一起实现了C++容器的Iterator设计模式. Iterators are a general ...
- C++ 头文件系列 (algorithm)
简介 algorithm头文件是C++的标准算法库,它主要应用在容器上. 因为所有的算法都是通过迭代器进行操作的,所以算法的运算实际上是和具体的数据结构相分离的 ,也就是说,具有低耦合性. 因此,任何 ...
- C++ 头文件系列 (bitset)
简介 该头文件有关位集,实际上是vector 位 位本质上对应bool的概念,只有0或1,true或false两种对立的值. 但很可惜,字节才是机器上最小的存储单元,所以bool基本上是由一个字节大小 ...
随机推荐
- iOS开发中在UIWebView中添加Gif动态图
开发是一件很有趣的事,偶尔在程序中添加一些小东西,会给你的应用增色不少.比如,当你的某些功能暂时还不准备上线时,可以先一个放展示Gif动态图的UIWebView上去,既可以告诉用户APP以后会有的功能 ...
- 微信小程序之----组件
1.view 把文档分割为独立的.不同的部分. view组件类似于html中的div标签,默认为块级元素,独占一行,可以通过设置display:inline-block改为行级元素. view.wxm ...
- hashchange
<!DOCTYPE html> <html> <head> <title>Hash Change Example</title> <s ...
- wukong搜索引擎源码解读
转自:https://ayende.com/blog/171745/code-reading-wukong-full-text-search-engine I like reading code, a ...
- 实现微信浏览器自动播放MP3音乐
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 利用PHPCMS V9站群功能建立分站
hosts文件就在C:\Windows\system32\drivers\etc\hosts下 用一套CMS软件系统,做多个网站,统一管理,用户可以互通,这就是所谓的站群功能.这对于运营和维护都能节省 ...
- Servlet RequestDispatcher需要注意的情况
Servlet RequestDispatcher需要注意的情况: 如果使用getServletContext().getRequestDispatcher("/a.do")得到R ...
- Spring util-namespace下标签相关操作
java代码 package com.stono.sprtest; import java.util.List; import java.util.Map; import java.util.Set; ...
- CSS页面渲染优化属性will-change
前面的话 当我们通过某些行为(点击.移动或滚动)触发页面进行大面积绘制的时候,浏览器往往是没有准备的,只能被动使用CPU去计算与重绘,由于没有事先准备,应付渲染够呛,于是掉帧卡顿.而CSS属性wi ...
- POJ1088(dp)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 91574 Accepted: 34573 Description ...