तार यह कैसे कोई फर्क होता अगर मेरी सी ++ कोड (नीचे के रूप में दिखाया गया है) एक स्ट्रिंग एक खाली स्ट्रिंग के रूप में प्रारंभ किया है:आरंभ के रूप में अशक्त बनाम रिक्त स्ट्रिंग
std::string myStr = "";
....some code to optionally populate 'myStr'...
if (myStr != "") {
// do something
}
बनाम कोई/बातिल प्रारंभ:
std::string myStr;
....some code to optionally populate 'myStr'...
if (myStr != NULL) {
// do something
}
क्या इसके आसपास कोई सर्वोत्तम प्रथाएं या गठिया हैं?
'न्यूल '(अवधारणात्मक) एक सूचक है, और इसका उपयोग केवल इस तरह किया जाना चाहिए। एक 'std :: string' एक सूचक नहीं है, इसलिए इसे संयुक्त नहीं किया जाना चाहिए। पुनश्च। प्रारंभिकरण समान हैं: 'std :: string' का ctor इसे खाली स्ट्रिंग पर सेट करता है। – MSalters
@MSalters hi मैं आपके बिंदु से सहमत हूं लेकिन फिर यदि प्रकार असंगत प्रतीत होते हैं तो संकलक एक त्रुटि क्यों नहीं फेंकता है। मेरे पास वीएस 2010 है और यह चुपचाप std :: स्ट्रिंग को न्यूल के साथ प्रारंभ करता है। –
@Surfing_SO: एक स्ट्रिंग कन्स्ट्रक्टर है जो शून्य अक्ष द्वारा समाप्त वर्णों की एक सरणी में पॉइंटर लेता है .. आपने गलत तरीके से ऐसे पॉइंटर को पास नहीं किया है (NULL वर्णों की सरणी को इंगित नहीं करता है, या कुछ और)। यह अनिर्धारित व्यवहार है और उस मामले में कुछ भी हो सकता है। – MSalters