C++ 无法使用{fmt}库在一个字符串中格式化两个浮点数

C++ 无法使用{fmt}库在一个字符串中格式化两个浮点数,c++,fmt,C++,Fmt,我刚开始在应用程序中使用{fmt}库,发现由于程序崩溃,我无法使用该库格式化两个位数不同的浮点 经过一些实验后,我意识到这实际上有点糟糕,因为在用{0.0f}或0.2f格式化任何浮点之后,我无法格式化任何内容 代码行为与我的直觉相反的示例: #include <fmt\core.h> #include <iostream> int main() { std::cout << fmt::format("{} , {}\n", 3.14, 10.0);

我刚开始在应用程序中使用{fmt}库,发现由于程序崩溃,我无法使用该库格式化两个位数不同的浮点

经过一些实验后,我意识到这实际上有点糟糕,因为在用{0.0f}或0.2f格式化任何浮点之后,我无法格式化任何内容

代码行为与我的直觉相反的示例:

#include <fmt\core.h>
#include <iostream>

int main()
{
    std::cout << fmt::format("{} , {}\n", 3.14, 10.0); // Prints out '3.14, 10.0'
    //std::cout << fmt::format("{0:.0f} , {}\n", 3.14, 10.0); // - ERROR: fmt::v6::format_error at memory location 
    std::cout << fmt::format("{0:.0f} , {0:.0f}\n", 3.14, 10.0); // - WRONG RESULT: Prints out '3, 3'
    std::cout << fmt::format("{0:.0f} , {:d}\n", 3.14, 10); // ERROR: fmt::v6::format_error at memory location

    //std::cout << fmt::format("{:s}, {:s}", fmt::format("{0:.2f}", 3.14), fmt::format("{:0:.1f}", 10.0)); // EVEN THIS DOESN'T WORK

    // This is the only way I found of getting the output I want:
    std::string a = fmt::format("{0:.2f}", 3.14);
    std::string b = fmt::format("{0:.1f}", 10.0);

    std::cout << fmt::format("{:s}, {:s}", a, b);

    return 0;
}
前面的数字:用于计算参数。 0:是第一个,1:第二个。。。 如果你没有把任何东西放在前面:那么这些论点将被按顺序考虑。 不能在同一格式字符串中混合使用某些{}带有参数计数器,而其他字符串没有此类参数计数器。

前面的数字:用于计算参数。 0:是第一个,1:第二个。。。 如果你没有把任何东西放在前面:那么这些论点将被按顺序考虑。
不能在同一格式字符串中混合使用某些{}带有参数计数器,而另一些没有参数计数器。

使用“:”之前的数字来计算参数:0是第一个,1是第二个。。。如果你不在“:”前面加上任何东西,那么这些论点就会被考虑得井然有序。@prog fh愚蠢的我。但是,为什么我最后的注释行失败了呢?我不理解符号:0:Nevermind。。。这是一个输入错误。@prog-fh谢谢你的帮助,如果你把它作为答案写下来,我会很高兴地接受它。在“:”之前的数字用于计算参数:0是第一个,1是第二个。。。如果你不在“:”前面加上任何东西,那么这些论点就会被考虑得井然有序。@prog fh愚蠢的我。但是,为什么我最后的注释行失败了呢?我不理解符号:0:Nevermind。。。那是个打字错误。@prog-fh谢谢你的帮助,如果你把它作为答案写下来,我会很乐意接受的。