必须#include <iomanip>先。
相关functions:
long flags( ) const 返回当前的格式标志。
long flays(long newflag) 设置格式标志为newflag,返回旧的格式标志。
long setf(long bits) 设置指定的格式标志位,返回旧的格式标志。
long setf(long bits,long field)将field指定的格式标志位置为bits,返回旧的格式标志
long unsetf(long bits) 清除bits指定的格式标志位,返回旧的格式标志。
long fill(char c) 设置填充字符,缺省条件下是空格。
char fill( ) 返回当前填充字符。
int precision(int val) 设置精确度为val,控制输出浮点数的有效位,返回旧值。
int precision( ) 返回旧的精确度值。
int width(int val) 设置显示数据的宽度(域宽),返回旧的域宽。
int width( )只返回当前域宽,缺省宽度为0。这时插入操作能按表示数据的最小宽度显示数据
dec 十进制的输入输出
hex 十六进制的输入输出
oct 八进制的输入输出
ws 提取空白字符
flush 刷新流
resetiosflags(long) 请除特定的格式标志位
setiosflags(long) 设置特定的格式标志位
setfill(char) 设置填充字符
setprecision(int) 设置输出浮点数的精确度
setw(int) 设置域宽格式变量
long flays(long newflag) 设置格式标志为newflag,返回旧的格式标志。
long setf(long bits) 设置指定的格式标志位,返回旧的格式标志。
long setf(long bits,long field)将field指定的格式标志位置为bits,返回旧的格式标志
long unsetf(long bits) 清除bits指定的格式标志位,返回旧的格式标志。
long fill(char c) 设置填充字符,缺省条件下是空格。
char fill( ) 返回当前填充字符。
int precision(int val) 设置精确度为val,控制输出浮点数的有效位,返回旧值。
int precision( ) 返回旧的精确度值。
int width(int val) 设置显示数据的宽度(域宽),返回旧的域宽。
int width( )只返回当前域宽,缺省宽度为0。这时插入操作能按表示数据的最小宽度显示数据
dec 十进制的输入输出
hex 十六进制的输入输出
oct 八进制的输入输出
ws 提取空白字符
flush 刷新流
resetiosflags(long) 请除特定的格式标志位
setiosflags(long) 设置特定的格式标志位
setfill(char) 设置填充字符
setprecision(int) 设置输出浮点数的精确度
setw(int) 设置域宽格式变量
核心是setf()和unsetf(),用来改变标志状态字,flags()用来获取该状态字的值.
格式化标志字(formatting flag):用一个长整数表示一个流当前的数据格式控制状态。 long x_flags 的每一位表示格式控制的一个状态标志.枚举定义在namespace ios中:
enum{
skipws = 0x0001,
left = 0x0002,
right = 0x0004,
internal = 0x0008,
dec = 0x0010,
oct = 0x0020,
hex = 0x0040,
showbase = 0x0080,
showpoint = 0x0100,
uppercase = 0x0200,
showpos = 0x0400,
scientific= 0x0800,
fixed = 0x1000,
unitbuf = 0x2000,
stdio = 0x4000
};
调用时可以用类似 cout.setf(ios::showbase); 来先设置输出格式,然后再输出流。
格式化标志字(formatting flag):用一个长整数表示一个流当前的数据格式控制状态。 long x_flags 的每一位表示格式控制的一个状态标志.枚举定义在namespace ios中:
enum{
skipws = 0x0001,
left = 0x0002,
right = 0x0004,
internal = 0x0008,
dec = 0x0010,
oct = 0x0020,
hex = 0x0040,
showbase = 0x0080,
showpoint = 0x0100,
uppercase = 0x0200,
showpos = 0x0400,
scientific= 0x0800,
fixed = 0x1000,
unitbuf = 0x2000,
stdio = 0x4000
};
调用时可以用类似 cout.setf(ios::showbase); 来先设置输出格式,然后再输出流。
例子:
0x12345用cout格式化输出为00012345: cout << setfill('0') << setw(8) << hex <<0x12345;
0x12345用cout格式化输出为00012345: cout << setfill('0') << setw(8) << hex <<0x12345;
设置填充"$"以及左对齐: cout <<setfill('$')<<setiosflags(ios::left);