操作符的格式控制
操作符是一种功能和ios成员函数相同,但使用更为便捷的函数,在C++中又被称为操纵子,它们都包含在iomanip头文件中,要使用它们都需要包含此头文件,例如上一节讲解setw()和setfill()都是操纵子。
由于操纵子都返回引用类型,因此操作符可以连用。用户在程序中使用操作符既可以简化程序编写,又可以使程序结构变得清晰。C++语言提供了两种操作符:无参操作符与有参操作符,接下来我们分别来学习这两种操作符。
1、无参操作符
无参操作符实现了常用的输入输出格式控制,C++提供的常用的无参操作符及其功能如表1所示。
表1 无参操作符
操作符 | 功能 |
---|---|
oct | 以八进制格式输出数据 |
dec | 以十进制格式输出数据 |
hex | 以十六进制格式输出数据 |
endl | 插入换行符并刷新输出缓冲流 |
ends | 插入空字符 |
flush | 刷新流 |
ws | 从输入流中提取空字符 |
2、有参操作符
有参数操作符实现了复杂的输入输出格式控制,C++提供的常用的有参操作符及其功能如表2所示。
表2 有参操作符
操作符 | 功能 |
---|---|
resetiosflag(long n) | 清除n指定的格式化标志 |
setbase(int n) | 设置以n表示的整形基数(0-10为十进制) |
setfill(char c) | 设置以c表示的填充字符 |
setiosflags(long n) | 设置n指定的格式化标志 |
setprecision(int n) | 设置以n表示的数值精度 |
setw(int n) | 设置以n表示的域宽 |
有参操作符与无参操作符可以组合使用,达到由ios类提供的成员函数的功能,例如下面的代码所示:
cout << setw(10) << 2.5 << endl; //设置域宽为10
cout << setbase(16) << 100 << endl; //以16进制输出100
cout << setiosflags(ios::showpos) << 1.2 << endl; //带“+”符号输出1.2
cout << flush; //刷新流
ios的成员函数完成的格式化,操作符都可以完成,而且操作符可以直接插入流中,使用更方便。读者在格式化输入输出时,可以选择使用操作符。