В чем разница между std :: string и std :: basic_string? И зачем оба нужны? - PullRequest
69 голосов
/ 02 ноября 2009

В чем разница между std::string и std::basic_string? И зачем оба нужны?

Ответы [ 3 ]

56 голосов
/ 02 ноября 2009

std::basic_string - это шаблон класса для создания строк из символьных типов, std::string - это typedef для специализации этого шаблона класса для char. Да, они оба необходимы (или, по крайней мере, требуется стандартом).

31 голосов
/ 02 ноября 2009

std::string является экземпляром std::basic_string<T>:

typedef std::basic_string<char> string

std::basic_string необходимо иметь аналогичный интерфейс для всех типов строк (например, wstring).

15 голосов
/ 02 ноября 2009

A std::string - это экземпляр шаблона std::basic_string с типом char. Вам нужно и то и другое, чтобы вы могли создавать строки из вещей, кроме char, например std::basic_string<wchar_t> для строки широких символов. Или, если вы хотите строку с 32-битными элементами, std::basic_string<unsigned int>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...