Arasındaki fark nedir std::stringve std::basic_string? Ve neden her ikisi de gerekli?
Yanıtlar:
std::basic_stringkarakter tiplerinin dışında dizeleri yapmak için bir sınıf şablonu vardır std::stringbir olduğunu typedefiçin bu sınıf şablonun bir uzmanlık için char. Evet, ikisi de gereklidir (veya en azından standart tarafından gereklidir).
std::stringşunların bir örneğidir std::basic_string<T>:
typedef std::basic_string<char> string
std::basic_stringtüm dizge türleri için benzer bir arayüze sahip olmak gerekir ( wstringörneğin).
stringa, uzmanlık arasında basic_string.
namespace std { typedef basic_string<char> string; }Teknik olarak, gerçekten bir örnekleme değildir, ama en azından daha yakındır (somutlaştırma, tanımı gereği, bir örnek oluşturur ve typedef, bir örnek değil, yalnızca bir ad oluşturur. ).
A std::string, std::basic_stringşablonun bir tür char. Sen yanında şeylerin dizeleri yapmak, böylece hem ihtiyaç char, böyle bir std::basic_string<wchar_t>geniş karakter dizesi için. Veya 32 bit elemanlı bir dizge istiyorsanız std::basic_string<unsigned int>,.
std::basic_stringBir chartür olmadan somutlaştırmayacağınız zamanlar için bir kullanım durumu sağlar .