库
输入/输出
输入/输出库
iostream 库是一个面向对象的库,使用流提供输入和输出功能。
流是一种抽象,代表在其上执行输入和输出操作的设备。流基本上可以表示为一个无限长度的字符源或目标。
流通常与一个物理字符源或目标相关联,例如磁盘文件、键盘或控制台,因此从我们称之为流的抽象中获取或写入的字符会物理地输入/输出到物理设备。例如,文件流是用于操作和与文件交互的 C++ 对象;一旦使用文件流打开文件,在该流上执行的任何输入或输出操作都会物理地反映在文件中。
为了操作流,C++ 提供了标准的
iostream库,其中包含以下元素
- 基本类模板
- iostream 库的基础是类模板的层次结构。类模板以类型无关的方式提供了库的大部分功能。
这是一组类模板,每个类模板都有两个模板参数:字符类型 (charT) 参数,它决定了要操作的元素类型;以及 traits 参数,它为特定类型的元素提供了额外的特性。
这个类层次结构中的类模板与其字符类型实例化的名称相同,但带有前缀basic_。例如,istream实例化的类模板叫做basic_istream,而fstream实例化的叫做basic_fstream,等等……唯一的例外是ios_base,它本身是类型无关的,因此不是基于模板,而是一个常规类。
- 类模板实例化
- 该库包含了整个 iostream 类模板层次结构的两套标准实例化:一套是窄向的,用于操作char类型的元素;另一套是宽向的,用于操作wchar_t.
类型的元素。窄向(char类型)的实例化可能是 iostream 库中更为人所知的部分。像ios, istream和、ofstream这样的类都是窄向的。本页顶部的图表显示了窄向类的名称和关系。
宽向(wchar_t)实例化的类遵循与窄向实例化相同的命名约定,但每个类和对象的名称都以w字符为前缀,例如构成wios, 、wistream和、wofstream等。
- 标准对象
- 作为 iostream 库的一部分,头文件<iostream>声明了某些用于在标准输入和输出上执行输入和输出操作的对象。
它们分为两组:窄向对象,即广为人知的cin, 、cout, 、cerr和、clog,以及它们对应的宽向对象,声明为wcin, 、wcout, 、wcerr和、wclog.
- 类型
- iostream 类在其成员的原型中很少使用基本类型。它们通常使用定义的类型,这些类型取决于其实例化中使用的 traits。对于默认的char和wchar_t实例化,使用streampos, 、streamoff和和 streamsize类型来分别表示位置、偏移量和大小。
- 操纵符
- 操纵符是全局函数,设计用于与在iostream流对象上执行的插入 (<<) 和提取 (>>) 运算符一起使用。它们通常修改流的属性和格式设置。endl, 、hex和和 scientific是操纵符的一些例子。
组织结构
该库及其类层次结构被分割在不同的文件中
- <ios>, <istream>, <ostream>, <streambuf>和<iosfwd>通常不会在大多数 C++ 程序中直接包含。它们描述了层次结构的基类,并由库中包含派生类的其他头文件自动包含。
- <iostream>声明了用于通过标准输入和输出进行通信的对象(包括cin和、cout).
- <fstream>定义了文件流类(如模板basic_ifstream或类、ofstream)以及与这些类一起使用的内部缓冲对象(basic_filebuf)。这些类用于使用流来操作文件。
- <sstream>:此文件中定义的类用于将 string 对象当作流来操作。
- <iomanip>声明了一些带参数的标准操纵符,与提取和插入运算符一起使用,以修改内部标志和格式选项。
兼容性说明
本参考中为 iostream 类包含的名称、原型和示例主要描述和使用
char类模板的实例化,而不是模板本身,尽管这些类只是其可能的实例化之一。我们认为这提供了更好的可读性,并且从
char实例化中获取基本模板的名称和原型与反向操作一样简单。
iostream 库的元素(char 实例化)
类:
- ios_base
- 流的基类 (类)
- ios
- 流的基类(类型依赖组件) (类)
- istream
- 输入流 (类)
- ostream
- 输出流 (类)
- iostream
- 输入/输出流 (类)
- ifstream
- 输入文件流类 (类)
- 、ofstream
- 输出文件流 (类)
- fstream
- 输入/输出文件流类 (类)
- istringstream
- 输入字符串流 (类)
- ostringstream
- 输出字符串流 (类)
- stringstream
- 输入/输出字符串流 (类)
- streambuf
- 流的基缓冲类 (类)
- filebuf
- 文件流缓冲区 (类)
- stringbuf
- 字符串流缓冲区 (类)
对象:
- cin
- 标准输入流 (对象)
- 、cout
- 标准输出流 (对象)
- 、cerr
- 标准错误输出流 (对象)
- 、clog
- 标准日志输出流 (对象)
类型:
- fpos
- 流位置类模板 (类模板)
- 、streamoff
- 流偏移类型 (类型)
- streampos
- 流位置类型 (类型)
- 和 streamsize
- 流大小类型 (类型)
操纵符:
- boolalpha
- 布尔值的字母数字表示 (函数)
- dec
- 使用十进制 (函数)
- endl
- 插入换行符并刷新 (函数)
- ends
- 插入空字符 (函数)
- fixed
- 使用定点浮点表示法 (函数)
- flush
- 刷新流缓冲区 (函数)
- 、hex
- 使用十六进制 (函数)
- internal
- 通过在内部位置插入字符来调整字段 (函数)
- left
- 将输出左对齐 (函数)
- noboolalpha
- 不使用布尔值的字母数字表示 (函数)
- noshowbase
- 不显示数值基数前缀 (函数)
- noshowpoint
- 不显示小数点 (函数)
- noshowpos
- 不显示正号 (函数)
- noskipws
- 不跳过空白字符 (函数)
- nounitbuf
- 插入后不强制刷新 (函数)
- nouppercase
- 不生成大写字母 (函数)
- oct
- 使用八进制 (函数)
- resetiosflags
- 重置格式标志 (函数)
- right
- 将输出右对齐 (函数)
- 和 scientific
- 使用科学计数浮点表示法 (函数)
- setbase
- 设置基数字段标志 (函数)
- setfill
- 设置填充字符 (函数)
- setiosflags
- 设置格式标志 (函数)
- setprecision
- 设置小数精度 (函数)
- setw
- 设置字段宽度 (函数)
- showbase
- 显示数值基数前缀 (函数)
- showpoint
- 显示小数点 (函数)
- showpos
- 显示正号 (函数)
- skipws
- 跳过空白字符 (函数)
- unitbuf
- 插入后刷新缓冲区 (函数)
- uppercase
- 生成大写字母 (函数)
- ws
- 提取空白字符 (函数)