हाल ही में मैं एक कष्टप्रद समस्या यह है कि मैं इस तरह के कार्यों को परिभाषित करना चाहते हों:केवल एक संदर्भ पैरामीटर के साथ परिवर्तनीय लंबाई पैरामीटर सूची का उपयोग कैसे करें?
std::string my_sprintf(const char* format, ...)
{
va_list args;
va_start(args, format);
...
}
std::string my_sprintf(const std::string& format, ...)
{
va_list args;
va_start(args, format); // error
...
}
लेकिन ऐसा लगता है संदर्भ मूल्य पिछले पैरामीटर जब चर लंबाई पैरामीटर सूची का उपयोग नहीं किया जा सकता।
क्या यह तरीका है कि मैं उपयोगकर्ता को स्ट्रिंग :: स्ट्रिंग प्रारूप स्ट्रिंग के रूप में उपयोग करने दे सकता हूं?
शायद कारक या कुछ और जो std :: स्ट्रिंग का पता लगाते हैं और इसे c_str() के रूप में परिवर्तित करते हैं, काम करेंगे, लेकिन मुझे नहीं पता कि निम्न चर लंबाई पैरामीटर सूची से कैसे निपटें।
संपादित करें: मैं वैरिएड टेम्पलेट का उपयोग नहीं कर रहा हूं क्योंकि मैं अंदर बनामप्रिंटफ का उपयोग कर रहा हूं। शायद vsprintf का उपयोग करने से बचें और std :: stringstream का उपयोग करना एक विकल्प है?
[टैग: सी] नहीं है [टैग: सी ++]। –
@iharob मेरा बुरा: पी –
सी ++ तरीका 'printf' बनाने के लिए वैरिएड टेम्पलेट्स का उपयोग करना है [जैसे यहां] (http://stackoverflow.com/questions/17671772/c11-variadic-printf-performance) – justanothercoder