首页 理论教育 C++STL格式标识详解

C++STL格式标识详解

时间:2023-10-25 理论教育 版权反馈
【摘要】:格式标识通常有如下16种:2.格式操控符类ios_base提供数个成员函数,可用于定义各种I/O格式,进而实现访问格式标志的功能。使用flags()函数可以一次操控所有格式标志。若传给flags()一个参数,则以该参数作为新格式标识状态,返回先前状态。unsetf用于关闭掩码m的OR表达式中的标识。

C++STL格式标识详解

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,返回先前的宽度。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈