在 C++20 中引入了 std::format,它是一个新的格式化字符串函数,可以方便地替代 sprintf。使用 std::format,可以避免 sprintf 带来的一系列安全问题和类型转换问题。

下面是一个使用 std::format 实现 sprintf 的示例:

#include <format>
#include <iostream>

int main()
{
    int num = 42;
    double pi = 3.141592653589793;

    std::string str1 = std::format("The answer is {}.", num);
    std::cout << str1 << std::endl;

    std::string str2 = std::format("Pi equals {:.2f}.", pi);
    std::cout << str2 << std::endl;

    return 0;
}

这个示例中,我们使用 std::format 来格式化字符串。它的语法类似于 printf,使用 {} 来表示需要替换的参数,并可以加上格式化选项。在这个示例中,我们分别使用了整数和浮点数来进行格式化,并且加上了一些格式化选项。

输出结果如下:

The answer is 42.
Pi equals 3.14.

可以看到,使用 std::format 可以方便地进行字符串格式化,并且避免了 sprintf 带来的一系列问题。

用 std::format实现 sprintf

原文地址: https://www.cveoy.top/t/topic/sEc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录