zoukankan      html  css  js  c++  java
  • 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

    5 typedefs

    • typedef basic_istream<char> istream
    • typedef basic_istream<wchar_t> wistream
    • typedef basic_iostream<char> iostream
    • typedef basic_iostream<wchar_t> wiostream
  • 相关阅读:
    Linux kill -9 和 kill -15 的区别
    redis 学习笔记之(五)redis-cli 命令
    专题(十四)awk
    Linux 学习笔记之(十一)SSH
    Linux 学习笔记之(十)查看文件
    rust 读写文件
    rust 显示本机ip
    rust error: linking with `link.exe` failed: exit code: 1181(未解决)
    Building a Concurrent Web Server with Async Rust
    Asynchronous Programming in Rust
  • 原文地址:https://www.cnblogs.com/lgxZJ/p/6404791.html
Copyright © 2011-2022 走看看