C++ 库 - <format>



C++20 中的<format>库提供了一种灵活的机制来格式化字符串、数字和其他数据类型。它简化了格式化过程,并消除了与旧的格式化技术(如printf或std::stringstream)相关的许多问题。

<format>库支持各种数据类型,包括整数、浮点数、字符和字符串。它还允许通过格式说明符来控制精度、填充、对齐和其他格式方面。

包含<format>头文件

要在你的C++程序中包含<format>头文件,可以使用以下语法。

#include <format>

<format>头文件的函数

以下是<format>头文件中所有函数的列表。

序号 函数及描述
1 begin

它返回指向格式字符串范围开头的迭代器。

2 end

它返回指向格式字符串范围末尾的迭代器。

3 advance_to

它将begin迭代器推进到给定位置。

4 next_arg_id

它进入自动索引模式,并返回下一个参数索引。

5 check_arg_id

它进入手动索引模式,检查给定的参数索引是否在范围内。

6 check_dynamic_spec

它检查具有给定参数索引的相应格式参数的类型是否在给定的类型模板参数中。

字符串格式化

在下面的示例中,我们将使用std::format()来格式化带有占位符的字符串。

#include <iostream>
#include <format>
int main() {
   std::string x = "ABC";
   int y = 12;
   std::string z = std::format("Name: {} , Age: {}", x, y);
   std::cout << z << std::endl;
   return 0;
}

输出

以下是上述代码的输出:

Name: ABC , Age: 12

文本对齐

让我们来看下面的例子,我们将使用{:<1}说明符将文本Suresh左对齐,使用{:>20}说明符将文本Ramesh右对齐。

#include <iostream>
#include <format>
int main() {
   std::string a = std::format("{:<1} {:>20}", "Suresh", "Ramesh");
   std::cout << a << std::endl;
   return 0;
}

输出

上述代码的输出如下:

Suresh               Ramesh
广告