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