“使用 std::string”和“#include <string>”有什么区别

Cha*_*lie -4 c++ string using include

我刚刚学习 C++,我不太明白将using std::stringVS放在#include <string>主文件顶部之间的区别。

我似乎能够定义字符串而无需#include <string>这里:

#include <iostream>
using std::cout; using std::cin;
using std::endl;
using std::string;

int main()
{
    string s = "hi";
    cout << s;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这似乎运行没有问题,那么为什么我会出现这个问题呢#include <string>

Chr*_*ris 6

您需要包含<string>要使用的标头std::string

添加using std::string;允许您在没有命名空间限定符的情况下使用它std::

如果您包含包含在内的标头,<string>则可能不必明确这样做。然而,依靠这一点是不好的做法,并且编写良好的标头包括防止多重包含的保护,因此假设您使用编写良好的头文件,包含通过先前包含而包含的标头没有任何害处。