在C++20中引入了std::format庫,它可以用來進行字符串格式化操作。std::format庫支持自定義類型格式化,可以通過重載operator<<或者定義一個名為formatter的內部類來實現自定義類型的格式化。
下面是一個示例,演示如何使用std::format自定義類型格式化:
#include <format>
#include <string>
// 自定義類型
struct Point {
int x;
int y;
};
// 定義formatter內部類來格式化自定義類型Point
template <>
struct std::formatter<Point> {
// 格式化函數
template <typename ParseContext>
auto format(const Point& p, ParseContext& ctx) {
return std::format_to(ctx.out(), "({}, {})", p.x, p.y);
}
};
int main() {
Point p{2, 3};
std::string formatted = std::format("Point coordinates: {}", p);
// 輸出: Point coordinates: (2, 3)
std::cout << formatted << std::endl;
return 0;
}
在上面的示例中,我們定義了一個名為Point的自定義類型,并且定義了一個名為formatter的內部類來格式化Point類型。在主函數中,我們使用std::format來格式化Point類型的對象,并輸出結果。
通過這種方式,你可以使用std::format來格式化自定義類型,從而更靈活地進行字符串格式化操作。