Как импортировать / включать строку в cpp - PullRequest
0 голосов
/ 10 апреля 2019

Я хотел бы использовать строковый класс.Должен ли я также задействовать using namespace std;?

Я думал, что #include <string> будет достаточно, но в CLion, когда отсутствует только один из этих двух (пространство имен или include), есть некоторые ошибки.

Что усложняет ситуацию, так это то, что существует <string> или <strings.h>.Какая разница?

Ответы [ 2 ]

5 голосов
/ 10 апреля 2019

<string> - это C ++ и предоставляет класс std::string.

<string.h> - это C (эквивалент C ++ равен <cstring>) и предоставляет только функции для работы на char*.

Не используйте using namespace std; (см. C ++ Core Guidelines ).

2 голосов
/ 10 апреля 2019

В C ++ оператор using не связан с включением функциональности этого пространства имен (или типа). Вместо этого он позволяет вам использовать пространство имен в операторе без префикса пространства имен в остальной части текущей области (или единицы компиляции, если у вас есть инструкция в глобальной области видимости) после оператора using.

Так что вы можете написать

#include <string>

std::string my_string;

или

#include <string>
using namespace std;

string my_string;

Как уже упоминали другие - первая версия более рекомендуется, чем вторая, потому что обычно есть причина, по которой вещи находятся в их собственном пространстве имен (например, здесь есть пространство имен std). Если у вас есть общий оператор using, вы можете столкнуться с неожиданными конфликтами имен или другими проблемами. Это особенно верно, если вы делаете это в заголовочном файле, что никогда не следует делать, если вы точно не знаете, какие будут результаты и где.

...