В чем разница между 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>.