Для удобства использования я хочу написать функцию форматирования, аналогичную sprintf, просто возвращающую std :: string, например:
std::string format_string(const char* format, ...)
Я могу использовать там vsnprintf
, но у меня проблема - я не знаю заранее, какой длины должен быть временный буфер. В Microsoft есть функция _vscprintf
, которая может это сделать, но я думаю, что она не переносима?
Один из вариантов - запустить временный буфер некоторого известного размера, а затем увеличить его, если этого недостаточно, с помощью vsnprintf
. Есть лучший подход? Спасибо
PS Ответьте пожалуйста без Boost. Я знаю про Boost, но мне любопытно, как его реализовать без.