如果使用了控制符,程
序开头除了加<ios
tream>头外,还
要加<iomanip
>。
输入输出流的控制符
控 制 符 | 作 用 |
dec | 设置整数为十进制 |
hex | 设置整数为八进制 |
oct | 设置整数为十六进制 |
setbase(n) | 设置整数为n进制(n=8,10,16) |
setfill(n) | 设置字符填充,c可以是字符常或 字符变量 |
setprecision(n) | 设置浮点数的效数字为 |
setw(n) | 设置字段宽度为n位 |
setiosflags(ios::fixed) | 设置浮点数以固定的小数位数显示 |
setiosflags(ios::scientific) | 设置浮点数以科学计数法表示 |
setiosflags(ios::left) | 输出左对齐 |
setiosflags(ios::right) | 输出右对齐 |
setiosflags(ios::skipws) | 忽略前导空格 |
setiosflags(ios::uppercase) | 在以科学计数法输出E与十六进制 输出X以大写输出,否则小写。 |
setiosflags(ios::showpos) | 输出正数时显示"+"号 |
resetiosflags() | 终止已经设置的输出格式状态, 在括号中应指定内容 |
//程序实例
#include <iostream>
#include <iomanip> //使用输入输出流控制符除了要加头文件<iostream>外,还要加<iomanip>头文件
using namespace std;
void testdouble()
{
double d1=12.345678901234567;
cout<<d1<<endl;
}
int main()
{
cout<<""123456"的十进制位:"<<dec<<123456<<",八进制为:"<<oct<<123456<<",十六进制为:"<<hex<<123456<<'n'<<endl;
//dec:返回数值的十进制,oct返回是指的八进制,hex返回数值的十六进制。
cout<<dec; //恢复为十进制格式
cout<<setfill('*')<<setw(10)<<setiosflags(ios::left)<<123456<<'n'<<endl; //setfill(c):设置字符填充,c可以是字符常或字符变量,只对本行有用。
// setw(n):设置字段宽度为n位,如果n小于所要返回的字符的宽度则保留字符原样输出,只对
//setiosflags(ios::left):左对齐,setiosflags(ios::right):右对齐
cout<<resetiosflags(ios::left); //终止已设置的输入输出流格式,本例去掉左对齐方式
double d=12.345678901234567;
testdouble(); //之前没有使用输入输出流控制符,d1默认格式输出(精度为6)
cout<<setprecision(16)<<d<<endl; //设置浮点数的精度,n为有效数字,采用四则五入法舍位,setprecision(n)中,n小于等于16有效。
testdouble(); //之前使用了setprecision(),此函数保留前面的宽度设置。
cout<<setiosflags(ios::fixed)<<setprecision(17)<<d<<endl;
//setiosflags(ios::fixed):设置浮点数以固定的小数位数显示,8为8位小数,所指定的小数位如果大于小数本身小数位则补0。
cout<<resetiosflags(ios::fixed);
cout<<setiosflags(ios::scientific)<<setiosflags(ios::uppercase)<<setprecision(4)<<d<<'n'<<endl;
// setiosflags(ios::scietific):用科学计数法表示,4为指定小数位分为四位,且第四位四舍五入。
//setiosflags(ios::uppercase) : 在以科学计数法输出E与十六进制输出X以大写输出,否则小写。
return 0;
}