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

Limiting total size of result with C++20 fmt

本文关键字:结果 C++20 fmt      更新时间:2023-10-16

我知道我可以限制特定字符串参数的大小,但IDK如何对整个输出进行限制。换句话说,这个程序只需要一次格式化调用就可以编写吗?

#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);