使用 C++20 fmt 限制结果的总大小

Limiting total size of result with C++20 fmt

我知道我可以限制特定字符串参数的大小,但不知道如何对整个输出进行限制。 换句话说,this 程序是否可以只调用一次格式来编写?

#include <string>
#include <iostream>
#include <fmt/format.h>

int LOG_MAX_MESSAGE_LENGTH = 11;

void f(const char* p) {
    std::cout << fmt::format("{:.{}}", fmt::format("ABI is {}", p),
                             LOG_MAX_MESSAGE_LENGTH)
              << std::endl;
}

int main() {
    f("hellooooo");
}

还有 format_to_n,它接受一个输出迭代器和一个大小(然后是通常的格式字符串和参数)。

format_to_n(
    std::ostream_iterator(std::cout), LOG_MAX_MESSAGE_LENGTH,
    "ABI is {}", p);