使用 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);
我知道我可以限制特定字符串参数的大小,但不知道如何对整个输出进行限制。 换句话说,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);