День добрый! У меня была такая функция для форматированного вывода в строку:
std::string strprintf(const char* format, ...)
{
va_list argptr;
std::vector<char> buffer;
va_start(argptr, format);
std::size_t length = vsnprintf(NULL, 0, format, argptr)+1;
buffer.resize(length, 0);
vsnprintf(&buffer[0], buffer.size(), format, argptr);
va_end(argptr);
return std::string(buffer.begin(), buffer.end() );
}
double pi = 3.14;
std::string pi_f = strprintf("f:pi=%f\n", pi);
template <typename... Args>
std::string strprintf(const char* format, Args&&... args)
{
std::vector<char> buffer;
std::size_t length = snprintf(NULL, 0, format, std::forward<Args>(args)...)+1;
buffer.resize(length, 0);
snprintf(&buffer[0], buffer.size(), format, std::forward<Args>(args)...);
return std::string(buffer.begin(), buffer.end() );
}