发布日期: 2024-01-07
概览
包含(include):
对象:
cin & wcin
cout & wcout
cerr & wcerr
clog & wclog
标准库 ios
类:
ios_base
basic_ios
std::ios & std::wios
其中, std::ios 的定义为 std::basic_ios
函数:
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
继承关系如下:
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 中, 也有这几个函数
总结
文件包含关系, 有尖括号 <> 的代表文件, 其余代表类:
|---
. |---
. |---ios_base
. |---basic_ios
|---
. |---ostream
. |---iostream
|---
. |---ostream
|---ifstream
|---ofstream
类的继承关系:
图片来源: cppreference.com
关于格式化输出
cout 定义于 标准库
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 等常量的原型在
std::ios_base& left(std::ios_base& str);
std::ios 是 std::basic_ios
简单的示例:
设置流的宽度:
cout.width(12); // 流宽度设置为 12
setw(12); // 流宽度设置为 12
// setw() 方法会使用流的 width() 方法, 它们是相同的
右对齐:
double a = 3.14159;
setw(12) // 或者 cout.width(12)
cout.setf(ios::right);
// output
// 3.14159
setf() 多标记组合:
cout.setf(ios::right | ios::showpos);
// 因为 setf(flags) 即使处理单标记, 也是 fl = fl | flags, 所以可以用管道符号分隔标记
设置浮点数精度
double a = 3.14159;
cout.precision(3); // 有效位数, 而非小数位数
// output
// 3.14