字符串类型是头文件还是标准命名空间?
is the string type a header file or in the standard namespace?
我是C++的新手,主要是编程,几天前才开始学习,对此我有点困惑。
标准命名空间中的字符串变量类型吗?
我发现我可以在不使用 #include <string>
的情况下使用字符串。我还可以使用 using namespace std;
来激活字符串的使用,或者例如 std::string mystring;
。
我知道使用 using namespace std;
允许在标准命名空间内使用所有 commands/functions,即 cout
.
如果字符串在标准命名空间内,#include <string>
是否与 using std::string;
相同?
std::string
是标准库 header <string>
中定义的 class。与标准库的所有名称一样,它在命名空间 std
.
中声明
is #include <string>
the same as saying using std::string;
?
没有。两者有完全不同的含义。
#include <string>
表示“将 header <string>
的内容包含到此文件中”。 header 包含 class std::string
等的定义。
using std::string;
本质上意味着“在当前命名空间中将标识符 string
声明为 std::string
的类型别名”。
“我发现我可以在不使用 #include <string>
的情况下使用字符串”
这是巧合。您包括了另一个 header,偶然包括了 <string>
。这在 C++ 中是允许的,并且很常见,例如<sstream>
。但是你不能依赖这个。如果你需要std::string
,你应该#include <string>
。
这将包括来自 std
命名空间的 std::string
。这个命名空间实际上是由多个header定义的。与类不同,命名空间不需要在一个header中定义;它们可以分布在多个。
我是C++的新手,主要是编程,几天前才开始学习,对此我有点困惑。
标准命名空间中的字符串变量类型吗?
我发现我可以在不使用 #include <string>
的情况下使用字符串。我还可以使用 using namespace std;
来激活字符串的使用,或者例如 std::string mystring;
。
我知道使用 using namespace std;
允许在标准命名空间内使用所有 commands/functions,即 cout
.
如果字符串在标准命名空间内,#include <string>
是否与 using std::string;
相同?
std::string
是标准库 header <string>
中定义的 class。与标准库的所有名称一样,它在命名空间 std
.
is
#include <string>
the same as sayingusing std::string;
?
没有。两者有完全不同的含义。
#include <string>
表示“将 header <string>
的内容包含到此文件中”。 header 包含 class std::string
等的定义。
using std::string;
本质上意味着“在当前命名空间中将标识符 string
声明为 std::string
的类型别名”。
“我发现我可以在不使用 #include <string>
的情况下使用字符串”
这是巧合。您包括了另一个 header,偶然包括了 <string>
。这在 C++ 中是允许的,并且很常见,例如<sstream>
。但是你不能依赖这个。如果你需要std::string
,你应该#include <string>
。
这将包括来自 std
命名空间的 std::string
。这个命名空间实际上是由多个header定义的。与类不同,命名空间不需要在一个header中定义;它们可以分布在多个。