C++20 格式化库:强大的字符串格式化工具

举报
码事漫谈 发表于 2025/03/07 15:57:14 2025/03/07
【摘要】 格式化语法 常见用法 1. 填充和对齐 2. 数值格式化 3. 进制格式化 4. 自定义类型 示例代码 注意事项C++20 的格式化库是一个强大的工具,用于处理字符串的格式化操作。它提供了类似于 Python 中 str.format() 的功能,但语法和用法更符合 C++ 的风格。以下是一些关于 C++20 格式化库的介绍和示例: 格式化语法C++20 的格式化库通过 std::form...

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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。