概览
包含(include):
- <ios>
- <streambuf>
- <istream>
- <ostream>
对象:
- cin & wcin
- cout & wcout
- cerr & wcerr
- clog & wclog
标准库 ios
类:
- ios_base
- basic_ios
- std::ios & std::wios
其中, std::ios
的定义为 std::basic_ios<char>
, std::wios
的定义为 std::basic_ios<wchar_t>
, basic_ios 继承自 ios_base
函数:
- uppercase & nouppercase: 控制输出大写字母
- internal & left & right: 设置填充字符的位置
- dec & hex & oct: 修改输入输出的基数
标准库 istream
类模板和 typedef:
- basic_istream & basic_iostream
- std::istream & std::wistream
- std::iostream & std::wiostream
其中, std::istream
定义为 std::basic_istream<char>
, 其余的也类似
继承关系如下:
ios_base <--- basic_ios <--- basic_istream <---\
\--- basic_ostream <--- basic_iostream
类 istream
全局对象:
- cin & wcin
成员函数:
- get
- getline
- read
标准库 ostream
类:
- basic_ostream
- std::ostream & std::wostream
其中, std::ostream
定义为 std::basic_ostream
, 其余类似
继承关系如下:
ios_base <--- basic_ios <--- basic_ostream
操作符:
- endl
- ends
- flush
函数:
- print(C++23)
- println(C++23)
类 ostream
全局对象:
- cout & wcout
- cerr & wcerr
- clog & wclog
成员函数:
- put
- teelp
标准库 fstream
类:
- basic_ifstream
- basic_ofstream
- ifstream & ofstream
其中, std::ifstream
定义为 std::basic_ifstream
, 其余类似
继承关系如下:
ios_base <--- basic_ios <--- basic_istream <--- basic_ifstream
类 ifstream
成员函数:
- is_open
- open
- close
类 ofstream 中, 也有这几个函数
总结
文件包含关系, 有尖括号 <> 的代表文件, 其余代表类:
<iostream>
|---<ios>
. |---<iosfwd>
. |---ios_base
. |---basic_ios
|---<istream>
. |---ostream
. |---iostream
|---<ostream>
. |---ostream
<fstream>
|---ifstream
|---ofstream
类的继承关系:
图片来源: cppreference.com
关于格式化输出
cout 定义于 标准库 <iostream> 文件中, 该文件包含 <ostream> 文件:
extern std::ostream cout
extern std::wostream wcout
cout 是 ostream 类的对象, 而 ostream 类继承于 ios_base, 大部分的格式化方法都在 ios_base 类中, 例如 setf() 方法, 所以可以有 std::cout.setf()
的用法
std::right 与 std::ios::right
std::right
或 std::dec
等常量的原型在 <ios> 文件中定义:
std::ios_base& left(std::ios_base& str);
std::ios
是 std::basic_ios<char>
的别名, 类 basic_ios 是继承于 ios_base 的, 实际上也是访问的 ios_base 中的常量, 从这一层面上来说, std::ios::right
与 std::ios_base::right
也相同 (但 basic_ios 是模板类, 可能在某些情况下有区别吧)