Полное имя string
- std::string
, потому что оно находится в namespace std
, пространстве имен, в котором находятся все функции, классы и объекты стандартной библиотеки C ++.
В свой код вы явно добавили строку using namespace std;
, которая позволяет вам использовать что угодно из стандартного пространства имен без использования префикса std::
. Таким образом, вы можете ссылаться на std::string
(настоящее имя строкового типа), используя сокращение string
, поскольку компилятор знает, как искать его в namespace std
.
Между string
и std::string
нет разницы в функциональности, потому что они одного типа. Тем не менее, бывают случаи, когда вы бы предпочли std::string
, а не string
. Например, в файле заголовка обычно не считается хорошей идеей помещать строку using namespace std;
(или использовать любое пространство имен, если на то пошло), потому что это может привести к тому, что имена в файлах, которые включают этот заголовок, станут неоднозначными. В этой настройке вы должны просто #include <string>
в заголовке, а затем использовать std::string
для обозначения строкового типа. Точно так же, если когда-либо была какая-либо двусмысленность между std::string
и каким-либо другим string
типом, использование имени std::string
устранит двусмысленность.
Включите ли вы строку using namespace std;
вообще - это довольно спорная тема, и многие программисты категорически за или категорически против нее. Я предлагаю использовать все, что вам удобно, и обязательно принимать любые соглашения о кодировании, которые используются при работе над большим проектом.
person
templatetypedef
schedule
31.03.2011