Volevo anche avvolgere printf e trovato una risposta utile qui:
How to pass variable number of arguments to printf/sprintf
non era affatto interessato alle prestazioni (sono sicuro che questo pezzo di codice può essere migliorata in un certo numero di modi, si sentono liberi di farlo :)), questo è per debugprinting generale, solo così ho fatto questo:
//Helper function
std::string osprintf(const char *fmt, ...)
{
va_list args;
char buf[1000];
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
return buf;
}
che ho poi posso usare come questo
Point2d p;
cout << osprintf("Point2d: (%3i, %3i)", p.x, p.y);
instead of for example:
cout << "Point2d: (" << setw(3) << p.x << ", " << p.y << ")";
Gli strati di C++ sono belli per alcuni aspetti, ma praticamente diventano orribili se si desidera stampare qualcosa di simile con alcune stringhe piccole come parentesi, due punti e virgole inserite tra i numeri.
possibile duplicato di [Inoltra un'invocazione di una funzione variadica in C] (http://stackoverflow.com/questions/150543/forward-an-invocation-of-a-variadic-function-in-c) –
Well la soluzione su quello stava usando vprintf, e non è questo il caso. –