इस खंड में हम देखेंगे कि C++ में string और char[] के बीच क्या अंतर हैं। char[] मूल रूप से वर्णों की एक सरणी है। इसलिए इस सरणी के कुछ गुण हैं। ये गुण नीचे सूचीबद्ध हैं।
यदि char[] स्टैक सेक्शन में आवंटित है तो यह हमेशा 256 बाइट्स की जगह घेरेगा। यह टेक्स्ट के आकार पर निर्भर नहीं करेगा।
यदि हम इसके लिए हीप सेक्शन में डायनामिक रूप से स्थान आवंटित करने के लिए malloc() या calloc() का उपयोग करते हैं तो हम इसके उपयोग के बाद मेमोरी जारी करने के लिए जिम्मेदार हैं, और हमारे पास हमेशा हीप एलोकेशन का ओवरहेड होता है।
यदि कैरेक्टर सरणी का आकार 256 वर्णों से बड़ा है, तो प्रोग्राम क्रैश हो सकता है। यह हमारे कोड में भद्दा असर्शन मैसेज उत्पन्न कर सकता है।
स्ट्रिंग की लंबाई प्राप्त करने के लिए हमें हर बार '\0' वर्ण तक पहुंचने तक पूरी कैरेक्टर सरणी को स्कैन करना होगा।
दूसरी ओर, C++ के मानक नामस्थान में string है। यह स्ट्रिंग एक क्लास है, और इसमें अंदर कैरेक्टर सरणी होती है। यह उपयोगकर्ता के लिए स्वचालित रूप से प्रबंधन करता है। ज्यादातर मामलों में स्ट्रिंग के लिए बिल्ट-इन सरणी 16 वर्णों की होती है। इसलिए छोटी स्ट्रिंग्स के लिए यह हीप को फ्रैगमेंट नहीं करता, लेकिन बड़ी स्ट्रिंग के लिए यह हीप सेक्शन का उपयोग करता है।
C++ string में बिल्ट-इन '\0' वर्ण होते हैं। यह गिनती के बिना स्ट्रिंग की लंबाई संग्रहीत करता है। चूंकि छोटे टेक्स्ट के लिए यह हीप नहीं लेता तो यह बफर ओवररन से बचाता है। और इसके अलावा C++ में स्ट्रिंग्स उपयोग में आसान हैं।