Skip to content

Instantly share code, notes, and snippets.

@piti118
Created April 14, 2012 02:09
Show Gist options
  • Save piti118/2381534 to your computer and use it in GitHub Desktop.
Save piti118/2381534 to your computer and use it in GitHub Desktop.
The missing std::string sprintf like function.
#include <string>
#include <cstdarg>
//missing string printf
//this is safe and convenient but not exactly efficient
inline std::string format(const char* fmt, ...){
int size = 512;
char* buffer = 0;
buffer = new char[size];
va_list vl;
va_start(vl,fmt);
int nsize = vsnprintf(buffer,size,fmt,vl);
if(size<=nsize){//fail delete buffer and try again
delete buffer; buffer = 0;
buffer = new char[nsize+1];//+1 for /0
nsize = vsnprintf(buffer,size,fmt,vl);
}
std::string ret(buffer);
va_end(vl);
delete buffer;
return ret;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment