मैं भी प्रिंटफ़ लपेटना चाहता था और यहाँ एक उपयोगी उत्तर मिला:
कैसे प्रिंट / स्प्रिंट करने के लिए तर्कों की चर संख्या पास करें
मुझे प्रदर्शन में कोई दिलचस्पी नहीं थी (मुझे यकीन है कि कोड के इस टुकड़े को कई तरीकों से बेहतर बनाया जा सकता है, ऐसा करने के लिए स्वतंत्र महसूस करें :)), यह सामान्य डिबगप्रिन्टिंग के लिए है, इसलिए मैंने ऐसा किया:
//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;
}
जो मैं फिर इस तरह का उपयोग कर सकते हैं
Point2d p;
cout << osprintf("Point2d: (%3i, %3i)", p.x, p.y);
instead of for example:
cout << "Point2d: ( " << setw(3) << p.x << ", " << p.y << " )";
सी ++ ऑस्ट्रेसेस कुछ पहलुओं में सुंदर हैं, लेकिन व्यावहारिक रूप से भयावह हो जाते हैं यदि आप कुछ छोटे स्ट्रिंग्स जैसे कि कोष्ठक, कॉलन और कॉमा के साथ सम्मिलित संख्याओं के बीच कुछ प्रिंट करना चाहते हैं।