std::format
是 C++20 中引入的一个新特性,它提供了一种类型安全且易于使用的方式来格式化字符串。与 std::string
的 +
或 +=
操作符进行字符串拼接相比,std::format
提供了更强大和灵活的格式化选项。
以下是 std::format
的一些主要格式化选项:
对齐:
{:<width>}
可以使字符串左对齐,并使用空格填充至指定宽度。{:>width}
可以使字符串右对齐,并使用空格填充至指定宽度。{:^width}
可以使字符串居中对齐,并使用空格填充至指定宽度。填充字符:
{:0>5}
会生成一个左对齐的字符串,并使用 0
填充至宽度为 5
。宽度和精度:
{:width}
:指定总宽度。{:精度}
:对于浮点数,指定小数点后的位数;对于整数,指定显示的位数。类型转换:
d
(十进制整数)、u
(无符号十进制整数)、x
(十六进制整数,带前缀 0x
或 0X
)、o
(八进制整数,带前缀 0o
或 0O
)等。std::format::formatter
接口来自定义格式化逻辑。标记:
{}
作为占位符,并在其后指定格式选项。+
表示始终显示符号(对于正数和负数),-
表示左对齐输出,0
表示使用零填充等。命名占位符(C++23 引入):
#name
作为占位符前缀,后跟名称,可以在格式字符串中引用之前定义的命名占位符。例如,{a:0>5}
和 {b:0>5}
可以在之前的格式字符串中分别定义为 {a:0>5}
和 {b:0>5}
,然后在一个后续的格式字符串中这样使用:{a#}{b#}
。下面是一个简单的示例,展示了如何使用 std::format
的一些基本格式化选项:
#include <iostream>
#include <format>
int main() {
int age = 30;
double salary = 5000.75;
std::string name = "Alice";
std::string formatted_string = std::format("Name: {:<10} | Age: {:>3} | Salary: {:.2f}", name, age, salary);
std::cout << formatted_string << std::endl;
return 0;
}
输出:
Name: Alice | Age: 30 | Salary: 5000.75
在这个示例中,我们使用了左对齐、宽度指定、精度指定和类型转换等格式化选项来创建一个格式化的字符串。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。