Apa perbedaan antara std::string
dan std::basic_string
? Dan mengapa keduanya dibutuhkan?
94
std::basic_string
adalah template kelas untuk membuat string dari tipe karakter, std::string
adalah typedef
untuk spesialisasi template kelas itu char
. Ya, keduanya dibutuhkan (atau setidaknya disyaratkan oleh standar).
std::string
adalah contoh daristd::basic_string<T>
:typedef std::basic_string<char> string
std::basic_string
perlu memiliki antarmuka yang serupa untuk semua jenis string (wstring
misalnya).sumber
string
adalah spesialisasi daribasic_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::string
adalah contohstd::basic_string
template dengan tipechar
. Anda membutuhkan keduanya sehingga Anda dapat membuat string hal-hal selain ituchar
, sepertistd::basic_string<wchar_t>
string karakter lebar. Atau jika Anda menginginkan string dengan elemen 32 bitstd::basic_string<unsigned int>
,.sumber
std::basic_string
tanpachar
tipe.