Apa perbedaan antara std::stringdan std::basic_string? Dan mengapa keduanya dibutuhkan?
Jawaban:
std::basic_stringadalah template kelas untuk membuat string dari tipe karakter, std::stringadalah typedefuntuk spesialisasi template kelas itu char. Ya, keduanya dibutuhkan (atau setidaknya disyaratkan oleh standar).
std::stringadalah contoh dari std::basic_string<T>:
typedef std::basic_string<char> string
std::basic_stringperlu memiliki antarmuka yang serupa untuk semua jenis string ( wstringmisalnya).
stringadalah spesialisasi dari basic_string.
namespace std { typedef basic_string<char> string; }Secara teknis, ini juga bukan sebuah instantiation, tapi setidaknya lebih dekat (instantiation, menurut definisi, membuat sebuah instance, dan typedef hanya membuat sebuah nama, bukan sebuah instance ).
A std::stringadalah contoh std::basic_stringtemplate dengan tipe char. Anda membutuhkan keduanya sehingga Anda dapat membuat string hal-hal selain itu char, seperti std::basic_string<wchar_t>string karakter lebar. Atau jika Anda menginginkan string dengan elemen 32 bit std::basic_string<unsigned int>,.
std::basic_stringtanpa chartipe.