Saya juga ingin membungkus printf dan menemukan jawaban yang membantu di sini:
Cara melewatkan sejumlah variabel argumen ke printf / sprintf
Saya sama sekali tidak tertarik dengan kinerja (saya yakin potongan kode ini dapat ditingkatkan dalam beberapa cara, silakan melakukannya :)), ini hanya untuk pencetakan debug umum jadi saya melakukan ini:
//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;
}
yang kemudian bisa saya gunakan seperti ini
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 indah dalam beberapa aspek, tetapi praktis menjadi mengerikan jika Anda ingin mencetak sesuatu seperti ini dengan beberapa string kecil seperti tanda kurung, titik dua, dan koma yang disisipkan di antara angka-angka tersebut.