您的位置:首页 > 其它

格式化输入与输出

2015-05-02 17:40 176 查看
除了条件状态外,每个iostream对象还维护了一个格式状态来控制IO如何格式化的细节。

标准库定义了一组操纵符(manipulator)来修改流的格式状态。一个操纵衔是一个函数或是一个对象,会影响流的状态,并能用作输入或输出运算符的运算对象。类似输入和输出运算符,操纵符也返回它所处理的流对象,因此我们可以在一条语句中组合操纵符和数据。

很多操纵符改变格式状态

操纵符用于两大类输出控制:控制数值的输出形式以及控制补白的数量和位置。

当操纵符改变流的格式状态时,通常改变后的状态对所有后续IO都有产效。

在输出中指出进制

如果需要打印八进制值或十六进制值,应该使用showbase操纵符。当对流应用showbase操纵符时,会在输出结果中显示进制。

控制浮点数格式

1。以多高精度(多少个数字)打印浮点值。

2。数值是打印为十六进制、定点十进制还是科学记数法形式。

3。对于没有小数部分的浮点值是否打印小数点。

指定打印精确度

默认情况下,精度会控制打印的数字的总数。当打印时,浮点值当前精度舍入而非截断。

我们可以通过调用IO对象的precision成员或使用setprecision操纵符来改变精度。

在执行scientific、fixed或hexfloat后,精度值控制的是小数点后面的数字位数,而默认情况下精度指定的是数字的总位数——既包括小数点之后的数字也包括小数点之前的数字。

输出补白

当按列打印数据时,我们常常需要非常精细地控制数据格式。标准库提供了一些操纵符帮助我们完成所需要的控制:

1。setw指定下一个数字或字符串值的最小空间。

2。left表示左对齐输出。

3。right表示右对齐输出,右对齐是默认格式。

4。internal控制负数的符号的位置,它左对齐符号,右对齐值,用空格填满所有中间空间。

5。setfill允许指定一个字符代替默认的空格来补白输出。

setw类似endl,不改变输出流的内部状态。它只决定下一个输出的大小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: