बीच क्या अंतर है 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प्रकार के बिना झटपट नहीं करेंगे ।