#include<iostream> // 包含输入输出流库头文件 using namespace std; // 使用标准命名空间 int main() // 主函数 { int a = 1234; // 定义整型变量a并赋值为1234 cout.setf(ios::showbase | ios::uppercase); // 设置cout的输出格式,显示数值的基数前缀和使用大写字母表示十六进制数的字母A-F cout << oct << a << " " << hex << a << endl; // 使用oct操纵符以八进制形式输出a,然后使用hex操纵符以十六进制形式输出a,最后输出换行符endl return 0; // 返回0表示程序成功执行 }
当我们使用cout
对象输出整数时,有时我们希望在输出中显示一些格式化的信息,比如八进制或十六进制的前缀,以及使用大写字母表示十六进制中的字母A到F。在C++中,我们可以使用操纵符(manipulators)来控制输出的格式。
cout.setf(ios::showbase | ios::uppercase);
这一行代码使用了成员函数setf()
来设置输出流cout
的标志位。让我们详细解释其中的两个标志位:
- ios::showbase: 这个标志位用于控制整数的基数(进制)是否显示前缀。例如,对于十六进制数,设置了这个标志位后,会在输出中显示 "0x" 前缀;对于八进制数,会显示 "0" 前缀。
- ios::uppercase: 这个标志位用于控制十六进制数的字母是否使用大写形式。设置了这个标志位后,十六进制数中的字母 A 到 F 会以大写形式显示。
所以,cout.setf(ios::showbase | ios::uppercase);
这一行代码的作用是设置cout
对象的标志位,使得在输出整数时,显示数值的基数前缀(如 "0x" 或 "0"),并且使用大写字母表示十六进制中的字母A到F。