Помимо самой распространенной (форматированной) функции, C ++ 20 также поставляется с format_to_n, который принимает выходной итератор и счетчик.
То, что я ищу, - это способ убедиться, что в случае, если мне не хватило места, моя строка все еще обнуляется. Например, я хочу, чтобы следующая программа выводила 4 вместо 42.
#include<string>
#include<iostream>
#define FMT_HEADER_ONLY
#include <fmt/format.h>
void f(char* in){
fmt::format_to_n(in, 2,"{}{}", 42,'\0');
std::cout << in;
}
int main(){
char arr[]= "ABI";
f(arr);
}
Возможно ли это без того, чтобы я вручную выполнял сравнение числа записанных символов и максимального количества символов, предоставленных мной для функции?
Если вам интересно, почему я использую '\ 0' в качестве аргумента:
Я понятия не имею, как поместить завершающий символ в строку формата.
примечание: я знаю, что для одного аргумента я можно указать max len с:. но я хотел бы, чтобы решение работало для нескольких аргументов.