Различия между включенными <xstring>, <cstring>, <string> и <wstring> в С++

Я видел следующие директивы #include:

#include <xstring>

#include <cstring>

#include <string>

#include <wstring>

В чем заключаются различия между этими директивами? Я пропустил какие-либо другие, которые должны считаться частью этой группы?

Ответы

Ответ 1

<string> где std::string определено.

<xstring> - это заголовок Microsoft С++, содержащий фактическую реализацию шаблона std::basic_string. Вам не нужно включать <xstring> самостоятельно. <string> включает его для реализации basic_string.

<cstring> - стандартная библиотека строк C (strcpy, strcat и т.д.), помещенная в пространство имен С++ std.

wstring не является файлом заголовка, о котором я знаю. std::wstring является wchar_t версией std::string и определяется при включении <string>.

Ответ 2

Только <cstring> и <string> являются стандартными заголовками. <xstring> - нестандартный заголовок.

#include <cstring>

Это <string.h>, но с объявлениями, помещенными в пространство имен std. Это "С++ версия" заголовка C.

#include <string>

Здесь определяется std::string. Он не имеет ничего общего с заголовком C.