I/O流控制:
(1)控制浮点数值显示可用
setprecision(n) 控制输出流显示浮点数的数字个数,默认输出有效值为6位。
setiosflags(ios::fixed) 用定点方式表示实数
seiosflags(ios::scientific) 用指数方式表示实数
setiosflags(ios::fixed)与seiosflags(ios::scientific)都可以和setprecision(n)合用,其效果分别为:控制小数点右边的数字个数,控制指数表示法的小数位数。
在用浮点表示的输出中,setprecision(n)表示有效位数。
在用定点表示的输出中,setprecision(n)表示小数位数。
在用指数形式输出时,setprecision(n)表示小数位数。
小数位数截短显示时,进行4舍5入处理。
// 测试环境:Visual Studio.net 2003 C++
#include "stdafx.h"
#include <iomanip>
#using <mscorlib.dll>
using namespace System;
using namespace std;
void _tmain()
{
double amount=22.0/7;
cout <<amount <<endl;
cout <<setprecision(1) <<amount <<endl
<<setprecision(2) <<amount <<endl
<<setprecision(3) <<amount <<endl
<<setprecision(4) <<amount <<endl;
cout <<setiosflags(ios::fixed);
cout <<setprecision(8) <<amount <<endl;
cout <<setiosflags(ios::scientific) <<amount <<endl;
// setiosflags(ios::fixed)定义在setiosflags(ios::scientific)前则指数形式不能被正确的输出。
cout <<setprecision(6);
}
(2)左右对齐输出可用
setiosflags(ios::left)和
setiosflags(ios::right)实现。
#include "stdafx.h"
#include <iomanip>
#using <mscorlib.dll>
using namespace System;
using namespace std;
void _tmain()
{
cout <<setiosflags(ios::right) //
交换setiosflags(ios::right)与setiosflags(ios::left)的位置可以实现先左后右对齐,否则都位右对齐
<<setw(5) <<1
<<setw(5) <<2
<<setw(5) <<3 <<endl;
cout <<setiosflags(ios::left)
<<setw(5) <<1
<<setw(5) <<2
<<setw(5) <<3 <<endl;
}
(3)设置填充字符可用
setw和
setfill实现。
setw用来确定显示的宽度,
setfill用来确定一个非空格的特别字符(设置填充的字符)。
(4)强制显示小数点和符号可用
setiosflags(ios::showpoint) 和
setiosflags(ios::showpos) 实现。