std::format
是 C++20 中引入的一个新特性,它提供了一种类型安全且易于使用的方式来格式化字符串。与 std::string
的 +
或 +=
操作符进行字符串拼接相比,std::format
提供了更好的性能和更清晰的代码。
以下是 std::format
的一些基本格式化规则:
{}
作为占位符。例如:std::string s = std::format("Hello, {}!", name);
int age = 25; std::string s = std::format("I am %d years old.", age);
-
标志来指定左对齐,使用 +
标志来指定右对齐。例如:std::string s = std::format("{0,3}", 123);
这将输出 001
(前导零被省略)。:
后跟一个宽度和一个精度来指定输出宽度和精度。例如:std::string s = std::format("{0:6}", 123);
这将输出 0000123
。对于浮点数,可以使用 .2f
来指定小数点后两位。例如:std::string s = std::format("{0:.2f}", 3.14159);
这将输出 3.14
。std::string s = std::format("{0:b}", 10);
这将输出 1010
(二进制表示)。std::string s = std::format("Hello, {name}! My name is {person}.", name="Alice", person="Bob");
std::format
也支持位置参数,这意味着你可以指定参数的顺序。例如:std::string s = std::format("The answer is {2}.", 42, "life", "the universe");
这将输出 The answer is life.
(注意,位置参数是从左到右匹配的)。请注意,std::format
返回的是一个 std::string
对象,你可以像处理任何其他字符串一样处理它。
最后,虽然 std::format
提供了强大的格式化功能,但在处理大量数据或需要极高性能的场景时,仍然建议使用更底层的字符串操作函数(如 std::stringstream
)或直接使用 C 风格的字符串格式化函数(如 sprintf
或 printf
的 C++ 兼容版本)。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。