C++学习笔记——format

记得添加 format模块

基本格式:format(填充与对齐(可选) 符号(可选) #(可选) 0(可选) 宽度(可选) 精度(可选) L(可选) 类型(可选))

	std::cout << std::format("{:.2}", std::numbers::pi);    //print : 3.1
    std::cout << std::format("{:.2f}", std::numbers::pi);   //print : 3.14

上述代码区别在于中括号内是否加入f关键字,也就是说若{:.2}则指保留两位有效数字,{:.2f}则表示保留小数点后两位,但需要注意的是,数据类型不能是整形

	std::cout << std::format("{:6}|{:<6}|{:>6}|{:^6}", 233, 233, 233, 233);	 //printf :   233|233   |   233| 233  

6指预留6个单位的空间用于输出,默认空格补齐,< > ^ 分别意为左对齐,右对齐,居中,系统默认为右对齐

	std::cout << std::format("{0:*^7}|{0:0^7}", 233);   //print : **233**|0023300

在此例子中,:前的0表示选取输出元素,也就是说在引号后的内容是被默认标注了顺序的,从0开始依次递增,因此你可以自定义数据输出的顺序;*(或其他字符都可)与^,<,>搭配使用可用于填充剩余空间,默认为空格

	std::cout << std::format("{0:e}|{0:g}|{0:a}|", 233.0);      //printf : 2.330000e+02|233|1.d2p+7|
    std::cout << std::format("{0:b}|{0:x}", 233);               //printf : 11101001|e9

在上述代码中,语句一的e,g,a分别代表科学格式化,常规格式化,十六进制格式化;语句二中的b,x分别代表二进制格式化和十六进制格式化但不允许使用precision选项

	double a = 233;
    	std::cout << std::format("{0:x}|{0:#x}|{1}|{1:#}", 233,a);     //print : e9|0xe9|233|233.

此处的#会在格式化后为其输出对应的格式(对于整数,替代形式会添加基数前缀(0x或0b;如果使用大写的E,G,A,B,X,那么效果是相同的,只不过输出的任何字母都将变为大写包括NaN值和无穷大值),对于浮点数,会使输出总是包含小数点,即使其后没有数字),可在输出中对比看出

	std::cout << std::format("{0:+}|{1:+}|{0:-}",233 ,-233);     //print : +233|-233|233

在sign的位置可使用字符,可在正数前加’+‘符号,也就是可以在非负数前加’+'或空格符

使用format制表

    const auto table_format = "{:>8} {:>8} {:>20}\n";
    std::cout << std::format(table_format, "Name", "Age", "Score");
    for (int i = 0; i < 10; i++)
    {
        std::cout << std::format(table_format, i, i * i, i + 50);
    }

输出:

    Name      Age                Score
       0        0                   50
       1        1                   51
       2        4                   52
       3        9                   53
       4       16                   54
       5       25                   55
       6       36                   56
       7       49                   57
       8       64                   58
       9       81                   59
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值