加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C++使用流操纵算子格式化输出

发布时间:2023-06-14 13:25:26 所属栏目:语言 来源:
导读:罗列了 <iomanip> 头文件中定义的一些常用的格式控制符,它们都可用于格式化输出。

C++ 流操纵算子
流操纵算子 作 用
*dec 以十进制形式输出整数 常用
hex 以十六进制形式输出整数
oct 以八进
罗列了 <iomanip> 头文件中定义的一些常用的格式控制符,它们都可用于格式化输出。

C++ 流操纵算子
流操纵算子    作  用
*dec    以十进制形式输出整数    常用
hex    以十六进制形式输出整数
oct    以八进制形式输出整数
fixed    以普通小数形式输出浮点数
scientific    以科学计数法形式输出浮点数
left    左对齐,即在宽度不足时将填充字符添加到右边
*right    右对齐,即在宽度不足时将填充字符添加到左边
setbase(b)    设置输出整数时的进制,b=8、10 或 16
setw(w)    指定输出宽度为 w 个字符,或输入字符串时读入 w 个字符。注意,该函数所起的作用是一次性的,即只影响下一次 cout 输出。
setfill(c)    在指定输出宽度的情况下,输出的宽度不足时用字符 c 填充(默认情况是用空格填充)
setprecision(n)    设置输出浮点数的精度为 n。

在使用非 fixed 且非 scientific 方式输出的情况下,n 即为有效数字最多的位数,如果有效数字位数超过 n,则小数部分四舍五人,或自动变为科学计 数法输出并保留一共 n 位有效数字。

在使用 fixed 方式和 scientific 方式输出的情况下,n 是小数点后面应保留的位数。
setiosflags(mask)    在当前格式状态下,追加 mask 格式,mask 参数可选择表 2 中的所有值。
resetiosflags(mask)    在当前格式状态下,删除 mask 格式,mask 参数可选择表 2 中的所有值。
boolapha    把 true 和 false 输出为字符串    不常用
*noboolalpha    把 true 和 false 输出为 0、1
showbase    输出表示数值的进制的前缀
*noshowbase    不输出表示数值的进制.的前缀
showpoint    总是输出小数点
*noshowpoint    只有当小数部分存在时才显示小数点
showpos    在非负数值中显示 +
*noshowpos    在非负数值中不显示 +
uppercase    十六进制数中使用 A~E。若输出前缀,则前缀输出 0X,科学计数法中输出 E
*nouppercase    十六进制数中使用 a~e。若输出前缀,则前缀输出 0x,科学计数法中输出 e。
internal    数值的符号(正负号)在指定宽度内左对齐,数值右对 齐,中间由填充字符填充。
注意:“流操纵算子”一栏带有星号 * 的格式控制符,默认情况下就会使用。例如在默认情况下,整数是用十进制形式输出的,等效于使用了 dec 格式控制符。

和 cout 成员方法的用法不同,下面程序演示了表 3 中这些格式控制符的用法:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    //以十六进制输出整数
    cout << hex << 16 << endl;
    //删除之前设定的进制格式,以默认的 10 进制输出整数
    cout << resetiosflags(ios::basefield)<< 16 << endl;
    double a = 123;
    //以科学计数法的方式输出浮点数
    cout << scientific << a << endl;
    //删除之前设定的科学计数法的方法
    cout << resetiosflags(ios::scientific) << a << endl;
    return 0;
}
程序执行结果为:
10
16
1.230000e+02
123

注意,如果两个相互矛盾的标志同时被设置,如先设置 setiosflags(ios::fixed),然后又设置 setiosflags(ios::scientific),那么结果可能就是两个标志都不起作用。因此,在设置了某标志,又要设置其他与之矛盾的标志时,就应该用 resetiosflags 清除原先的标志。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章