напишите c ++ функцию format_string для форматирования, например sprintf of std :: string

Для удобства использования я хочу написать функцию форматирования, аналогичную sprintf, просто возвращающую std :: string, например:

std::string format_string(const char* format, ...)

Я могу использовать там vsnprintf , но у меня проблема - я не знаю заранее, какой длины должен быть временный буфер. В Microsoft есть функция _vscprintf , которая может это сделать, но я думаю, что она не переносима?

Один из вариантов - запустить временный буфер некоторого известного размера, а затем увеличить его, если этого недостаточно, с помощью vsnprintf . Есть лучший подход? Спасибо


PS Ответьте пожалуйста без Boost. Я знаю про Boost, но мне любопытно, как его реализовать без.

6
задан zaharpopov 15 November 2010 в 07:37
поделиться