Ответ 1
Это два разных заголовка.
-
<string>
для С++std::string
class -
<string.h>
для c строковых функций (например,strlen()
и т.д.), который должен быть<cstring>
для проекта С++ (это третий, о котором вы не знали).
Каков наилучший способ включить стандартный заголовок string.h в проект на С++?
Используя [dot] h в конце, вот так:
#include <string.h>
или просто писать
#include <string>
Или, может быть, используя другой способ, который я не знаю?
Спасибо!
Это два разных заголовка.
<string>
для С++ std::string
class<string.h>
для c строковых функций (например, strlen()
и т.д.), который должен быть <cstring>
для проекта С++ (это третий, о котором вы не знали).его совсем другое!
<string.h>
эта библиотека для строк стиля C
<string>
для строк С++
по стандарту на С++ вы должны использовать <cstring>
вместо <string.h>
Wiki говорит:
Стандартная библиотека С++ также включает 18 заголовков ISO C90 C стандартная библиотека, заканчивающаяся на ".h", но их использование устарело. Все другие заголовки в стандартной библиотеке С++ DO NOT заканчиваются на .h ".
Каждый заголовок из стандартной библиотеки C включен в С++ Стандартная библиотека под другим именем, созданная путем удаления .h, и добавление" c "в начале; например," time.h "становится" ctime".
string - С++ stl headfile предоставить строку класса шаблона string.h - стандартный файл headfile предоставляют много функций для использования. как strlen strcpy memcpy. если вы хотите использовать в пространстве имен std, который не использует пространство имен глобуса или не хочет использовать string.h вы можете использовать cstring вместо.
Файлы заголовков *.h
часто являются заголовочными файлами C, которые вы можете использовать в С++, возможно, с extern "C" { ... }
wrapping
Заголовки без *.h
обычно являются подлинными заголовками С++.
Это правило только.
Последние и предыдущие стандарты С++ (С++ 11, С++ 03) определяют заголовки типа <cstdio>
для правильной упаковки исходных заголовков C, с использованием пространств имен и т.д.
Стандарт
#include <string>