मैं स्ट्रिंग अक्षर के डेटाटाइप के बारे में उलझन में हूं। क्या यह const char *
या const char
है? अंतर्दृष्टि की सराहना की जाती है। धन्यवादसी ++ स्ट्रिंग शाब्दिक के डेटाटाइप क्या है?
उत्तर
यह एक const char[N]
है (जो है एक ही बातchar const[N]
के रूप में), जहां N
स्ट्रिंग की लंबाई के साथ साथ समाप्त NUL
के लिए एक (या बस स्ट्रिंग की लंबाई अगर आप एक की लंबाई को परिभाषित "है स्ट्रिंग "जैसा कि पहले से ही NUL
समेत है)।
यही कारण है कि आप स्ट्रिंग में वर्णों की संख्या प्राप्त करने के लिए sizeof("hello") - 1
कर सकते हैं (किसी भी एम्बेडेड NUL
एस सहित); यदि यह एक सूचक था, तो यह काम नहीं करेगा क्योंकि यह हमेशा आपके सिस्टम पर सूचक का आकार होगा (शून्य से एक)।
इसे वापस करने के लिए, * एक संकीर्ण स्ट्रिंग शाब्दिक में "एन कॉन्स्ट चार का सरणी" टाइप किया गया है, जहां n नीचे की गई स्ट्रिंग का आकार है, और स्थैतिक संग्रहण अवधि (3.7) है। * – chris
डाउनवॉटर टिप्पणी करने की देखभाल ? –
नहीं I. महाकाव्य झुकाव देखने के बाद मैंने इस प्रश्न पर उदारता से वोट व्यक्त किए हैं। जवाब, ठीक है, यह एक और कहानी है .. =) – WhozCraig
"Hello world"
const char[12]
(ग्यारह वर्ण प्लस '\0'
टर्मिनेटर) है।
L"Hello world"
const wchar_t[12]
है।
और चूंकि सी ++ 14, "Hello world"s
std::string
है।
इसके अलावा u8""
, u""
और U""
स्ट्रिंग शाब्दिक द्वारा सी ++ 11 जोड़ा अंकन, जो UTF-8, UTF-16 और UTF-32 एन्कोडिंग क्रमशः निर्दिष्ट करते हैं, ध्यान दें। गैर-योग्य स्ट्रिंग अक्षरों का एन्कोडिंग (यानी ""
और L""
) कार्यान्वयन-परिभाषित (और हमेशा था) है।
इसी तरह के प्रश्न के लिए मेरा उत्तर http://stackoverflow.com/questions/12451496/what-is-the-data-type-for-a-string/12452097#12452097 देखें। – PiotrNycz
जिन लोगों के पास यह गलत है (इसकी कॉन्स char * सोच रहा है) की संख्या से निर्णय लेना मैं यह देखने में असफल रहा कि यह क्यों नीचे मतदान किया जा रहा है। स्पष्ट रूप से यह एक बहुत अच्छा सवाल है जब आधे उत्तरदाताओं को जवाब नहीं पता है। – WhozCraig
@ क्रिएगेलसन, मैंने देखा है कि 10 के के प्रतिनिधि के साथ बहुत से लोग आखिरी बार गलत हो जाते हैं। – chris