CppFormat 格式字符串语法详解

CppFormat 格式字符串语法详解

【免费下载链接】fmt 【免费下载链接】fmt 项目地址: https://gitcode.com/gh_mirrors/fmt5/fmt

格式字符串基础概念

CppFormat 库提供了一套强大而灵活的格式字符串语法,用于控制变量在输出时的表现形式。格式字符串由普通文本和替换字段组成,替换字段用大括号 {} 包围。

基本语法规则

  1. 普通文本:不在大括号内的内容会原样输出
  2. 转义大括号:需要输出 {} 时,使用双写形式 {{}}
  3. 替换字段:基本形式为 {[参数标识][:格式说明]}

参数标识的用法

参数标识用于指定要格式化的参数,支持两种形式:

  1. 位置参数:使用数字索引,如 {0}{1}
  2. 命名参数:使用标识符名称,如 {name}{age}

位置参数的简写

当参数按顺序排列时(0,1,2,...),可以省略索引号:

"From {} to {}"  // 等价于 "From {0} to {1}"

格式说明详解

格式说明部分以冒号 : 开头,控制值的显示方式。基本结构如下:

[[填充]对齐][符号]["#"][0][宽度]["."精度]["L"][类型]

对齐与填充

  1. 对齐选项

    • <:左对齐(字符串默认)
    • >:右对齐(数字默认)
    • ^:居中对齐
  2. 填充字符

    • 可以是任意Unicode字符(除 {}
    • 填充字符必须与对齐选项一起使用

示例:

"{:*<10}"  // 左对齐,宽度10,用*填充不足部分

数字格式控制

  1. 符号控制

    • +:正负数都显示符号
    • -:仅负数显示符号(默认)
    • 空格:正数前加空格,负数前加减号
  2. 特殊格式

    • #:显示进制前缀(0x, 0b, 0)
    • 0:数字前补零
    • L:使用本地化数字分隔符
  3. 宽度与精度

    • 宽度:最小输出长度
    • 精度:浮点数小数位数或字符串最大长度

类型说明符详解

字符串类型

类型说明
s字符串格式(默认)
?调试格式(转义特殊字符)

字符类型

类型说明
c字符格式(默认)
?调试格式(转义特殊字符)

整数类型

类型说明示例
b二进制1010
B二进制(大写前缀)0B1010
d十进制(默认)42
o八进制52
x十六进制(小写)2a
X十六进制(大写)2A

浮点数类型

类型说明示例
f定点表示法3.141593
e科学计数法(小写e)3.141593e+00
E科学计数法(大写E)3.141593E+00
g自动选择f或e3.14159
a十六进制浮点0x1.921fb5p+1

指针类型

类型说明
p指针格式(默认)

时间日期格式化

CppFormat 支持对时间点和持续时间进行格式化,语法类似于 strftime:

%Y - 四位年份
%m - 两位月份
%d - 两位日期
%H - 24小时制小时
%M - 分钟
%S - 秒

示例:

"{:%Y-%m-%d %H:%M:%S}"  // 输出类似 "2023-05-15 14:30:00"

实际应用示例

  1. 基本格式化
fmt::format("Hello, {}!", "world");  // "Hello, world!"
  1. 数字格式化
fmt::format("{:.2f}", 3.14159);  // "3.14"
  1. 对齐与填充
fmt::format("{:*^10}", "hi");  // "****hi****"
  1. 进制转换
fmt::format("{:#x}", 42);  // "0x2a"
  1. 时间格式化
auto now = std::chrono::system_clock::now();
fmt::format("{:%Y-%m-%d}", now);  // "2023-05-15"

通过掌握这些格式化语法,开发者可以精确控制各种类型数据的输出格式,满足各种复杂的显示需求。

【免费下载链接】fmt 【免费下载链接】fmt 项目地址: https://gitcode.com/gh_mirrors/fmt5/fmt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值