Подтвердить что ты не робот

<string.h> или <string>?

Каков наилучший способ включить стандартный заголовок string.h в проект на С++? Используя [dot] h в конце, вот так:

#include <string.h>

или просто писать

#include <string>

Или, может быть, используя другой способ, который я не знаю?

Спасибо!

4b9b3361

Ответ 1

Это два разных заголовка.

  • <string> для С++ std::string class
  • <string.h> для c строковых функций (например, strlen() и т.д.), который должен быть <cstring> для проекта С++ (это третий, о котором вы не знали).

Ответ 2

его совсем другое!

<string.h> эта библиотека для строк стиля C

<string> для строк С++

по стандарту на С++ вы должны использовать <cstring> вместо <string.h>

Ответ 3

Wiki говорит:

Стандартная библиотека С++ также включает 18 заголовков ISO C90 C стандартная библиотека, заканчивающаяся на ".h", но их использование устарело. Все другие заголовки в стандартной библиотеке С++ DO NOT заканчиваются на .h ".

Каждый заголовок из стандартной библиотеки C включен в С++ Стандартная библиотека под другим именем, созданная путем удаления .h, и добавление" c "в начале; например," time.h "становится" ctime".

Ответ 4

string - С++ stl headfile предоставить строку класса шаблона string.h - стандартный файл headfile предоставляют много функций для использования. как strlen strcpy memcpy. если вы хотите использовать в пространстве имен std, который не использует пространство имен глобуса или не хочет использовать string.h вы можете использовать cstring вместо.

Ответ 5

Файлы заголовков *.h часто являются заголовочными файлами C, которые вы можете использовать в С++, возможно, с extern "C" { ... } wrapping

Заголовки без *.h обычно являются подлинными заголовками С++.

Это правило только.

Последние и предыдущие стандарты С++ (С++ 11, С++ 03) определяют заголовки типа <cstdio> для правильной упаковки исходных заголовков C, с использованием пространств имен и т.д.

Ответ 6

Стандарт

#include <string>