Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में string और char[] टाइप्स के बीच अंतर

इस खंड में हम देखेंगे कि C++ में string और char[] के बीच क्या अंतर हैं। char[] मूल रूप से वर्णों की एक सरणी है। इसलिए इस सरणी के कुछ गुण हैं। ये गुण नीचे सूचीबद्ध हैं।

  • यदि char[] स्टैक सेक्शन में आवंटित है तो यह हमेशा 256 बाइट्स की जगह घेरेगा। यह टेक्स्ट के आकार पर निर्भर नहीं करेगा।

  • यदि हम इसके लिए हीप सेक्शन में डायनामिक रूप से स्थान आवंटित करने के लिए malloc() या calloc() का उपयोग करते हैं तो हम इसके उपयोग के बाद मेमोरी जारी करने के लिए जिम्मेदार हैं, और हमारे पास हमेशा हीप एलोकेशन का ओवरहेड होता है।

  • यदि कैरेक्टर सरणी का आकार 256 वर्णों से बड़ा है, तो प्रोग्राम क्रैश हो सकता है। यह हमारे कोड में भद्दा असर्शन मैसेज उत्पन्न कर सकता है।

  • स्ट्रिंग की लंबाई प्राप्त करने के लिए हमें हर बार '\0' वर्ण तक पहुंचने तक पूरी कैरेक्टर सरणी को स्कैन करना होगा।

दूसरी ओर, C++ के मानक नामस्थान में string है। यह स्ट्रिंग एक क्लास है, और इसमें अंदर कैरेक्टर सरणी होती है। यह उपयोगकर्ता के लिए स्वचालित रूप से प्रबंधन करता है। ज्यादातर मामलों में स्ट्रिंग के लिए बिल्ट-इन सरणी 16 वर्णों की होती है। इसलिए छोटी स्ट्रिंग्स के लिए यह हीप को फ्रैगमेंट नहीं करता, लेकिन बड़ी स्ट्रिंग के लिए यह हीप सेक्शन का उपयोग करता है।

C++ string में बिल्ट-इन '\0' वर्ण होते हैं। यह गिनती के बिना स्ट्रिंग की लंबाई संग्रहीत करता है। चूंकि छोटे टेक्स्ट के लिए यह हीप नहीं लेता तो यह बफर ओवररन से बचाता है। और इसके अलावा C++ में स्ट्रिंग्स उपयोग में आसान हैं।

  1. - C++ में 'struct' और 'typedef struct' में अंतर?

    C++ में, struct और typedef struct के बीच कोई अंतर नहीं है क्योंकि, C++ में, सभी struct/union/enum/class घोषणाएं ऐसा व्यवहार करती हैं जैसे वे इम्प्लिसिटली typedefed हैं, जब तक कि नाम उसी नाम की किसी अन्य घोषणा द्वारा छिपा नहीं जाता। हालांकि एक सूक्ष्म अंतर है कि typedefs को फॉरवर्ड डिक्लेयर नहीं किय

  1. - C++ स्ट्रिंग कॉन्स्टेंट्स और कैरेक्टर कॉन्स्टेंट्स में अंतर

    C++ में, सिंगल कोट्स में एक कैरेक्टर एक कैरेक्टर लिटरल है। इसका प्रकार char है। उदाहरण के लिए, a ASCII आधारित सिस्टम पर मान 97 के साथ char प्रकार का है। डबल कोट्स में एक कैरेक्टर या कैरेक्टर्स की स्ट्रिंग एक स्ट्रिंग लिटरल दर्शाती है। इसका प्रकार const char[] है और यह स्ट्रिंग की लंबाई + 1 के आकार

  1. - C++ में रिलेशनल ऑपरेटर (==) और std::string::compare() में अंतर

    रिलेशनल ऑपरेटर == और std::string::compare() के बीच केवल एक अंतर है। वह है रिटर्न वैल्यू। आंतरिक रूप से, string::operator==() string::compare() का उपयोग कर रहा है। रिलेशनल ऑपरेटर (==) एक बूलियन लौटाता है जो केवल यह दर्शाता है कि 2 स्ट्रिंग्स समान हैं या नहीं, जबकि compare एक इंटीजर लौटाता है जो दर्श