Ayrıca printf'i paketlemek istedim ve burada yararlı bir yanıt buldum:
Printf / sprintf'e değişken sayıda bağımsız değişken nasıl iletilir
Performansla hiç ilgilenmedim (eminim bu kod parçası birkaç şekilde geliştirilebilir, bunu yapmaktan çekinmeyin :)), bu sadece genel hata ayıklama için, bu yüzden şunu yaptım:
//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;
}
daha sonra bunun gibi kullanabilirim
Point2d p;
cout << osprintf("Point2d: (%3i, %3i)", p.x, p.y);
instead of for example:
cout << "Point2d: ( " << setw(3) << p.x << ", " << p.y << " )";
C ++ ostreams bazı yönlerden güzeldir, ancak parantez, iki nokta üst üste ve sayılar arasına virgül gibi bazı küçük dizeler ekleyerek böyle bir şey yazdırmak istiyorsanız pratikte korkunç olur.