स्वरूपित वापसी करने के लिए मैं कुछ इस तरह करना चाहते हैं:ग समारोह स्ट्रिंग
writeLog(printf("This is the error: %s", error));
तो मैं एक समारोह जो एक स्वरूपित स्ट्रिंग रिटर्न के लिए देख रहा हूँ।
स्वरूपित वापसी करने के लिए मैं कुछ इस तरह करना चाहते हैं:ग समारोह स्ट्रिंग
writeLog(printf("This is the error: %s", error));
तो मैं एक समारोह जो एक स्वरूपित स्ट्रिंग रिटर्न के लिए देख रहा हूँ।
कोई भी कार्य मौजूद नहीं है, थोड़ा अलग दृष्टिकोण पर विचार करें: writeLog
printf-like, यानी एक स्ट्रिंग और तर्कों की एक चर संख्या लें। फिर, इसे आंतरिक रूप से संदेश स्वरूपित करें। यह स्मृति प्रबंधन समस्या को हल करेगा, और writeLog
के मौजूदा उपयोगों को तोड़ नहीं देगा।
आप यह संभव लगता है, तो आप इन पंक्तियों के साथ कुछ का उपयोग कर सकते हैं:
void writeLog(const char* format, ...)
{
char msg[100];
va_list args;
va_start(args, format);
vsnprintf(msg, sizeof(msg), format, args); // do check return value
va_end(args);
// write msg to the log
}
इस अच्छे दृष्टिकोण के लिए धन्यवाद। ठीक वही जो मेरे द्वारा खोजा जा रहा था। – Zulakis
मानक पुस्तकालय में ऐसा कोई फ़ंक्शन नहीं है और मानक लाइब्रेरी में कभी भी कोई नहीं होगा। यदि आप एक चाहते हैं, तो आप इसे स्वयं लिख सकते हैं। यहां आपको इसके बारे में सोचना चाहिए: लौटाई गई स्ट्रिंग के लिए स्टोरेज आवंटित करने वाला कौन है, और कौन इसे मुक्त करने जा रहा है? क्या यह थ्रेड-सुरक्षित होगा या नहीं? क्या लौटाई गई स्ट्रिंग की अधिकतम लंबाई पर सीमा होगी या नहीं?
'देखें snprintf'। –
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/ sprintf – Mark
क्षमा करें, लेकिन ऐसा लगता है जैसे स्नप्रिंटफ स्प्रिंटफ के समान ही करता है, स्वरूपित स्ट्रिंग को एक चर में डाल देता है। जो मैं खोज रहा हूं वह एक ऐसा फ़ंक्शन है जो सीधे स्वरूपित स्ट्रिंग को वापस करता है। – Zulakis