В чем разница между std::string
и std::basic_string
? И зачем нужны оба?
Какая разница между std::string и std:: basic_string? И зачем нужны оба?
Ответ 1
std::basic_string
- это шаблон класса для создания строк из типов символов, std::string
- это typedef
для специализации этого шаблона класса для char
. Да, они оба необходимы (или, по крайней мере, требуются стандартом).
Ответ 2
std::string
является экземпляром std::basic_string<T>
:
typedef std::basic_string<char> string
std::basic_string
необходимо иметь аналогичный интерфейс для всех типов строк (например, wstring
).
Ответ 3
A std::string
является экземпляром шаблона std::basic_string
с типом char
. Вам нужны оба, чтобы вы могли создавать строки вещей помимо char
, таких std::basic_string<wchar_t>
для строки с широкими символами. Или, если вам нужна строка с 32-битными элементами, std::basic_string<unsigned int>
.