Avatar ·

C++ में sprintf की तरह स्ट्रिंग फ़ॉर्मेटिंग: आधुनिक और सुरक्षित तरीके

नमस्ते! मैं हाल ही में C++ में कोड लिख रहा हूँ, और मुझे स्ट्रिंग फ़ॉर्मेटिंग की समस्या का सामना करना पड़ा। पहले C में मैं sprintf का उपयोग करता था:
char buffer[256];
sprintf(buffer, "नमस्ते, %s! आपकी उम्र %d वर्ष है।", name.c_str(), age);
लेकिन C++ में std::string के साथ यह असुविधाजनक है: c_str() का उपयोग करना पड़ता है, फिक्स्ड-साइज़ buffer की ज़रूरत होती है, और sprintf असुरक्षित है (buffer overflow हो सकता है)। मैंने snprintf आज़माया — यह बेहतर है, लेकिन फिर भी बोझिल है। मुझे पता है कि std::stringstream मौजूद है, लेकिन यह बहुत वर्बोज़ है:
std::stringstream ss;
ss << "नमस्ते, " << name << "! आपकी उम्र " << age << " वर्ष है।";
std::string result = ss.str();
यह सरल मामलों के लिए ठीक है, लेकिन जब संख्याओं को फ़ॉर्मेट करना हो (field width, precision, hex), तो स्यूडो-कोड लिखना कष्टदायक हो जाता है। उदाहरण के लिए, कैसे आउटपुट करें