文章目录
- 格式化语法
- 常见用法
- 1. 填充和对齐
- 2. 数值格式化
- 3. 进制格式化
- 4. 自定义类型
- 示例代码
- 注意事项
C++20 的格式化库是一个强大的工具,用于处理字符串的格式化操作。它提供了类似于 Python 中
str.format()
的功能,但语法和用法更符合 C++ 的风格。以下是一些关于 C++20 格式化库的介绍和示例:
格式化语法
C++20 的格式化库通过 std::format
函数实现,其基本语法如下:
std::string formatted = std::format(format_string, args...);
其中,format_string
是格式化字符串,args
是需要格式化的参数。
常见用法
1. 填充和对齐
- 左对齐:
std::format("{:<10}", value)
。 - 右对齐:
std::format("{:>10}", value)
。 - 居中对齐:
std::format("{:^10}", value)
。 - 自定义填充字符:
std::format("{:*<10}", value)
。
2. 数值格式化
- 指定宽度:
std::format("{:10}", value)
。 - 指定精度:
std::format("{:.5f}", value)
。 - 补零:
std::format("{:010}", value)
。 - 显示符号:
std::format("{:+}", value)
。
3. 进制格式化
- 十进制:
std::format("{:d}", value)
。 - 二进制:
std::format("{:b}", value)
。 - 八进制:
std::format("{:o}", value)
。 - 十六进制:
std::format("{:x}", value)
。
4. 自定义类型
如果需要格式化自定义类型,需要为该类型提供一个 std::formatter
特化。
示例代码
以下是一些使用 C++20 格式化库的示例代码:
#include <iostream>
#include <format>
int main() {
int number = 42;
std::string formatted = std::format("The answer is {}!", number);
std::cout << formatted << std::endl;
double pi = 3.141592653589793;
std::cout << std::format("Pi is {:.5f}\n", pi);
std::cout << std::format("{:*^10}", ":)") << std::endl;
std::cout << std::format("{:010}", 123) << std::endl;
return 0;
}
注意事项
- C++20 的格式化库是标准库的一部分,但需要编译器支持 C++20 特性。
- 如果编译器尚未支持,可以使用类似的第三方库,如
fmt
。