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是哨兵的趣味,标准交付的阐述是,那几个类是为了做1些格外安全的放到和后置工作
全体格式化输入函数在进行前都会组织一个sentry对象,假如该指标协会成功,那些函数会继续执行;
否则,格式化函数会遵照境况设置badbit位,并抛出尤其。

二.二 格式化输入函数

  • operator >>
    该运算符有多少个重载版本,分别定义了总结bool、short、unsigned等在内的四个格式化输入。
    但注意,这个函数不包蕴对char有关项目标重载(但C++14接近有)

二.3 非格式化输入函数

  • gcount : 返回上三次非格式化函数提取的字符数
  • get : 提取字符。
  • getline : 提取一行字符。
  • ignore : 提取并且遗弃字符。
  • peek : “peek”下二个字符,不提取
  • read : 提取一块字符。
  • readsome : 提取里头流缓冲区存有的字符。
  • putback放回新近领到的1个字符。
  • unget : “un-get”一个字符。

2.4 流定位函数

  • tellg : 再次来到输入流当下字符的脚下岗位
  • seekg : 设置输入流的近期岗位。

2.5 同步函数

  • sync : 那一个函数有点难明白,它的中间调用顺序是istream::sync
    -> basic_streambuf::pubsync -> basic_streambuf::sync
    因而要从最底层函数的语义去理解它:将缓冲区的始末与关系的字符流同步
    由此,如若是正统输入流,则是将缓冲区的内容清空,保持与键盘输入的3只;
    如若是文本流,则是将缓冲区内容与公事内容同步。

3 basic_iostream模版

该模版只是简单地多连续了basic_istream和basic_ostream,并定义了多少个protected的移位赋值运算符和swap成员函数。

4 manipulators

5 typedefs

  • typedef basic_istream<char> istream
  • typedef basic_istream<wchar_t> wistream
  • typedef basic_iostream<char> iostream
  • typedef basic_iostream<wchar_t> wiostream