1.格式标识
std::ios类定义了部分格式标识。这些标识具有互斥的位值,通过“或”(OR)操作,形成位掩码。setiosflag()函数和函数resetiosflag操作符,成员函数setf()和unsetf(),可接受这些标识和通过“或”(OR操作)形成的掩码做实参。格式标识通常有如下16种:
2.格式操控符
类ios_base提供数个成员函数,可用于定义各种I/O格式,进而实现访问格式标志的功能。这些函数包括setf()、unsetf()、flags()、flags(flags)和copyfmt(stream)。这些函数可以处理所有格式定义。setf()函数和unsetf()函数用于分别设置和清除一个或多个标识;二元操作符“OR”可将多个标志合并,从而一次操控多个标识。setf()函数以第二参数为掩码,清除该掩码所标识的所有标识,之后设置第一参数所代表的标识。若setf()输入一个参数,则稍有差异。使用flags()函数可以一次操控所有格式标志。调用无参数的flags()会返回当前标识。若传给flags()一个参数,则以该参数作为新格式标识状态,返回先前状态。flags()函数是非常有用的,还可用于储存当前标识状态,以便在适当时机恢复。
而copyfmt()函数用于从stream中复制所有格式定义。
setiosflags()函数和resetiosflags()函数可以在改写语句或输入语句中设定或清理标识。使用这两个函数需要包含头文件<iomanip>。
下面详细介绍setbase()、setfill()、setprecision()和setw()函数。
setbase(int base)用于实现基于base输出整数。
setfill()用于设置作为填充字符的字符。
setprecision()用于设置浮点数的精度(即数字的个数或位数)。
setw()用于设置显示字段的宽度。
使用“<<”符号将操作符插入输出流中,也可以使用“>>”运算符插入到输入流中。
典型的格式操作符包括std::endl、std::ends、std::dec、std::flush、std::hex、std::oct和std::ws。其含义分别如下:
std::endl——在输出流中插入'\n',刷新流。
std::ends——插入空字符'\0'。
std::dec——按十进制显示整数。
std::flush——刷新流。(www.xing528.com)
std::hex——按十六进制显示整数。
std::oct——按八进制显示整数。
std::ws——跳过输入流中的整数。
std::fixed——浮点数输出。
3.格式化函数详解
类std::ios包含很多控制流格式的函数,通过该类的对象可以调用这些函数。下面介绍部分格式化函数。
fill()用于返回当前填充字符。
fill(int ch)用于设置填充字符,返回先前填充字符。
precision()用于返回当前浮点精度。
precision(int p)用于设置精度p,返回先前的精度。
setf(int m)用于设置掩码m的OR表达式中的标识,返回先前的标识。
setf(int m1,int m2)用于设置掩码m1,关闭掩码m2。
unsetf(int m)用于关闭掩码m的OR表达式中的标识。
width()用于放回当前的宽度。
width(int w)用于设置宽度为w,返回先前的宽度。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。