#include #include #include int sprintf (std::string &dest, const char *fmt, ...) { int len; va_list ap; if (dest.capacity () > dest.length ()) { dest.resize (dest.capacity ()); } va_start (ap, fmt); len = vsnprintf (const_cast (dest.c_str ()), dest.capacity (), fmt, ap); va_end (ap); if (len > 0 && static_cast (len) >= dest.capacity ()) { dest.resize (len + 1); va_start (ap, fmt); len = vsnprintf (const_cast (dest.c_str ()), dest.capacity (), fmt, ap); va_end (ap); } dest.resize (len); return len; } int main () { std::string r; int len; len = sprintf (r, "%i %s %i", 32, "kokot", 23); printf ("%i %s %i\n", len, r.c_str (), r.length ()); return 0; }