Программистское полуриторическое
Aug. 8th, 2012 04:55 pmКакого, спрашивается, рожна этот велосипед приходится постоянно изобретать?
Почему он не в стандартной библиотеке с самого начала?
std::string format(const char * form, ...) {
const int bufsize = 1024;
char buf[bufsize];
std::string ret;
va_list al, al_copy;
va_start (al,form);
va_copy (al_copy, al);
int need = vsnprintf(buf, bufsize, form, al) + 1;
if (need <= bufsize) {
ret = buf;
} else {
char dyn[need];
vsprintf(dyn, form, al_copy);
ret = dyn;
}
va_end(al_copy);
va_end(al);
return ret;
}