2.9 C++控制符
点击上方“C语言入门到精通”,选择置顶
第一时间关注程序猿身边的故事
作者
闫小林
白天搬砖,晚上做梦。我有故事,你有酒么?
C++输入输出的控制符
读者学习C语言的过程中,应该遇到过这个问题,需要控制输出小数点位数,在C语言中是这样来控制的
//输出小数点后两位
int pi=3.1415;
printf("%3.2f",pi);//%m.nf中m是值输出数据的总宽度,n是小数点位数
同样在C++中在输入输出时有点特殊要求,比如要求输出实数是要保留两位小数,数据向左向右对齐,C++中提供了这样的控制符。
和C语言一样,如果要调用stio.h库函数以前的方法,需要在开头添加头文件,控制符的头文件是iomanip。
控制符控制输出格式
控制符 | 作用 | |
dec | 设置整数的基数为10 | |
hex | 设置整数的基数为16 | |
oct | 设置整数的基数为8 | |
setbase(n) | 设置整数的基数为n(n只能是16,10,8之一) | |
setfill(c) | 设置填充字符c,c可以是字符常量或字符变量 | |
setprecision(n) | 设置实数的精度为n位。在以一般十进制小数形式输出时,n代表有效数字。在以fixed(固定小数位数)形式和scientific(指数)形式输出时,n为小数位数。 | |
setw(n) | 设置字段宽度为n位 | |
setiosflags(ios::fixed) | 设置浮点数以固定的小数位数显示 | |
setiosflags(ios::scientific) | 设置浮点数以科学计数法(即指数形式)显示 | |
setiosflags(ios::left) | 输出数据左对齐 | |
setiosflags(ios::right) | 输出数据右对齐 | |
setiosflags(ios::shipws) | 忽略前导的空格 | |
setiosflags(ios::uppercase) | 在以科学计数法输出E和十六进制输出字母X时,以大写表示 | |
setiosflags(ios::showpos) | 输出正数时,给出“+”号 | |
resetiosflags | 终止已设置的输出格式状态,在括号中应指定内容。 |
设置格式状态的格式标志
格式标志 | 作用 |
ios::left | 输出数据在本域宽范围内左对齐 |
ios::right | 输出数据在本域宽范围内右对齐 |
ios::internal | 数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充 |
ios::dec | 设置整数的基数为10 |
ios::oct | 设置整数的基数为8 |
ios::hex | 设置整数的基数为16 |
ios::showbase | 强制输出整数的基数(八进制以0打头,十六进制以0x打头) |
ios::showpoint | 强制输出浮点数的小点和尾数0 |
ios::uppercase | 在以科学计数法输出E和十六进制输出字母X时,以大写表示 |
ios::showpos | 输出正数时,给出“+”号 |
ios::fixed | 设置浮点数以固定的小数位数显示 |
ios::stdio | 每次输出后清除 stdout,stderr |
流对象的成员控制输出格式
流成员函数 | 作用 |
precision(n) | 设置实数的精度为n位 |
setprecision(n) | 设置实数的精度为n位 |
width(n) | 设置字段宽度为n位 |
setw(n) | 设置字段宽度为n位 |
fill(c) | 设置填充字符c |
setfill(c) | 设置填充字符c |
setf( ) | 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中内容相同。 |
setiosflags( ) | 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中内容相同。 |
ubsetf( ) | 终止已设置的输出格式状态 |
resetiosflags( ) | 终止已设置的输出格式状态 |
案例:正常输出双精度浮点变量pi的值3.1415926
cout<<pi;
#include<iostream> //头文件
#include<iomanip> //为了调用setprecision引入的头文件
using namespace std;
int main() //主函数
{
double pi=3.1415926; //定义变量
cout<<setprecision(7)<<pi<<endl; //输出语句
}
会输出
3.141593
需要注意的一点是在使用setprecision时编译系统会自动进行四舍五入。