C++ 头文件系列(istream)
1. 简介
其实叫它istream有点不合适,因为该头文件不仅定义了istream,还定义了iostream。
2. basic_istream模版
basic_istream继承自basic_ios,也是其它输入流的基类。
2.1 sentry类
The class sentry defines a class that is responsible for doing exception safe prefix and suffix operations.
sentry是哨兵的意思,标准给出的解释是,这个类是为了做一些异常安全的前置和后置工作。 所有格式化输入函数在执行前都会构造一个sentry对象,如果该对象构造成功,这些函数会继续执行; 否则,格式化函数会根据情况设置badbit位,并抛出异常。
2.2 格式化输入函数
- operator >> : 该运算符有多个重载版本,分别定义了包括bool、short、unsigned等在内的多个格式化输入。 但注意,这些函数不包括对char有关类型的重载(但C++14好像有)。
 
2.3 非格式化输入函数
- gcount : 返回上一次非格式化函数提取的字符数。
 - get : 提取字符。
 - getline : 提取一行字符。
 - ignore : 提取并且放弃字符。
 - peek : “peek”下一个字符,不提取。
 - read : 提取一块字符。
 - readsome : 提取内部流缓冲区存有的字符。
 - putback : 放回最近提取的一个字符。
 - unget : “un-get”一个字符。
 
2.4 流定位函数
- tellg : 返回输入流当前字符的当前位置。
 - seekg : 设置输入流的当前位置。
 
2.5 同步函数
- sync : 这个函数有点难理解,它的内部调用顺序是
istream::sync->basic_streambuf::pubsync->basic_streambuf::sync。 因此要从底层函数的语义去理解它:将缓冲区的内容与关联的字符流同步。 因此,如果是标准输入流,则是将缓冲区的内容清空,保持与键盘输入的同步; 如果是文件流,则是将缓冲区内容与文件内容同步。 
3 basic_iostream模版
该模版只是简单地多继承了basic_istream和basic_ostream,并定义了几个protected的移动赋值运算符和swap成员函数。
4 manipulators
- ws : 在当前位置提取white-space。
 
5 typedefs
typedef basic_istream<char> istreamtypedef basic_istream<wchar_t> wistreamtypedef basic_iostream<char> iostreamtypedef basic_iostream<wchar_t> wiostream
C++ 头文件系列(istream)的更多相关文章
- C++ 头文件系列(iterator)
		
简介 该头文件围绕迭代器展开,定义了一系列与迭代器有关的概念,但最最最重要的一点就是----它和其它容器一起实现了C++容器的Iterator设计模式. Iterators are a general ...
 - C++ 头文件系列(iostream)
		
1. 简介 这个头文件非常特殊,它只声明了8个常用流对象. 2. 8个对象 2.1 窄字符对象(char) extern istream cin extern ostream cout extern ...
 - 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++ 头文件系列 (algorithm)
		
简介 algorithm头文件是C++的标准算法库,它主要应用在容器上. 因为所有的算法都是通过迭代器进行操作的,所以算法的运算实际上是和具体的数据结构相分离的 ,也就是说,具有低耦合性. 因此,任何 ...
 
随机推荐
- cron 执行php文件
			
php执行的命令要写全路径,不然无法执行
 - MySQL数据文件的导入、导出
			
1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导 ...
 - UVA 10518 How Many Calls?
			
题意:一个递推式第n项%b是多少. 递推式: 构造矩阵: #include<cstdio> #include<cstring> #include<cmath> #i ...
 - R语言实战(四)回归
			
本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...
 - STM32中的位带(bit-band)操作(转)
			
源:STM32中的位带(bit-band)操作 支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写.在 CM3 中,有两个区中实现了位带.其中一个是 SRAM 区的最低 1MB 范围 ...
 - Heka GeoIpDecoder 配置
			
Prepare: 安装geoip-api-c,确保/usr/include/GeoIP.h存在: 源码编译安装Heka (容易出现问题): 下载GeoLiteCity.dat数据库. 配置文件举例: ...
 - 编译Uboot时提示error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
			
在Ubuntu14.04 64位系统中已经安装了libc6:i386的库,编译Uboot时提示error while loading shared libraries: libz.so.1: cann ...
 - ui主线程控件的更新就让这个activity的异步任务做完整
			
项目中使用的SingleMessageView,控件实例化后,点击用户头像,此时跳转到UserInfo里查看这个用户的头像.用户名.签名.标签. 之前,师兄在SingleMessage里写了个头像的点 ...
 - SVN 备忘录
			
上传文件夹 svn import distcomp/ svn+ssh://USERNAME@166.120.110.119/mnt/disk1/fserver/svn/distcomp -m &quo ...
 - ML_note1
			
Supervised Learning In supervised learning, we are given a data set and already know what our correc ...