मुझे पता है कि सी/सी ++ में स्ट्रिंग अक्षर स्थिर भंडारण अवधि है, जिसका अर्थ है कि वे "हमेशा के लिए" रहते हैं, यानी जब तक कार्यक्रम चलता है।सी ++ स्ट्रिंग अक्षर बनाम कॉन्स स्ट्रिंग्स
इस प्रकार, अगर मैं एक समारोह है कि बहुत बार कहा जाता है की जा रही है और एक स्ट्रिंग तो जैसे शाब्दिक का उपयोग करता है:
void foo(int val)
{
std::stringstream s;
s << val;
lbl->set_label("Value: " + s.str());
}
जहां set_label समारोह एक const std::string&
एक पैरामीटर के रूप लेता है।
क्या मुझे स्ट्रिंग अक्षर के बजाय const std::string
का उपयोग करना चाहिए या इससे कोई फर्क नहीं पड़ता?
मुझे जितना संभव हो उतना रनटाइम मेमोरी खपत कम करने की आवश्यकता है।
संपादित करें:
मैं स्ट्रिंग एक const std::string prefix("Value: ");
कि एक स्थिरांक के कुछ प्रकार में आरंभ नहीं हो जाता फ़ाइल शीर्षक के साथ शाब्दिक तुलना करने के लिए मतलब है।
इसके अलावा, संयोजन यहां एक अस्थायी रिटर्न (हमें यह Value: 42
और यह अस्थायी समारोह set_text()
के लिए पारित किया जा रहा है के लिए एक स्थिरांक संदर्भ कॉल? हूँ मैं इस में ठीक कर लें,
आप फिर से धन्यवाद!
की जाँच अपने जादू 8 गेंद में क्या कहना है? –
यदि आप रनटाइम मेमोरी खपत को कम करना चाहते हैं, तो कॉन्स्ट char * लेने के लिए set_label को संशोधित करने के बारे में और स्ट्रिंग के बजाय char * का उपयोग कैसे करें? – user347594
@ user347594: मैं दुर्भाग्य से 'set_label' को संशोधित नहीं कर सकता –