बीच क्या अंतर है std::string
और std::basic_string
? और दोनों की आवश्यकता क्यों है?
जवाबों:
std::basic_string
चरित्र प्रकार से बाहर तार बनाने के लिए एक वर्ग टेम्पलेट, है std::string
एक है typedef
के लिए उस वर्ग टेम्पलेट की एक विशेषज्ञता के लिए char
। हाँ, वे दोनों आवश्यक हैं (या मानक द्वारा कम से कम आवश्यक)।
std::string
इसका एक तात्कालिकता है std::basic_string<T>
:
typedef std::basic_string<char> string
std::basic_string
सभी प्रकार के तार ( wstring
उदाहरण के लिए) के लिए समान इंटरफ़ेस होना आवश्यक है ।
string
की विशेषज्ञता है basic_string
।
namespace std { typedef basic_string<char> string; }
तकनीकी रूप से, यह वास्तव में तात्कालिकता नहीं है, लेकिन यह कम से कम करीब (तात्कालिकता, परिभाषा के अनुसार, एक उदाहरण बनाता है, और एक typedef केवल एक नाम बनाता है, उदाहरण नहीं। )।
A एक प्रकार के टेम्पलेट std::string
का एक तात्कालिकता std::basic_string
है char
। आपको दोनों की ज़रूरत है ताकि आप इसके अलावा चीजों का तार बना सकें char
, जैसे std::basic_string<wchar_t>
कि चौड़े पात्रों की एक स्ट्रिंग के लिए। या आप, 32 बिट तत्वों के साथ एक स्ट्रिंग चाहते हैं std::basic_string<unsigned int>
।
std::basic_string
एक char
प्रकार के बिना झटपट नहीं करेंगे ।