c-为什么在#include之后仍需要使用std :: string?

这个问题已经在这里有了答案:            >            C++ namespace and include                                    11个
为了使用字符串,我需要包括字符串标题,以便其实现可用.但是如果是这样,为什么我仍然需要使用std :: string添加行?

为什么它还不知道字符串数据类型?

#include <string>

using std::string;

int main() {
    string s1;
}
最佳答案
因为字符串是在名为std的命名空间中定义的.

您可以在任何< string>包含在内,但您可以使用std :: string添加,并且不要在范围内使用命名空间(因此std :: string可能会被引用为string).您可以将其放置在例如函数内部,然后仅适用于该函数:

#include <string>

void foo() {
    using std::string;

    string a; //OK
}

void bar() {
    std::string b; //OK
    string c; //ERROR: identifier "string" is undefined
}

转载注明原文:c-为什么在#include之后仍需要使用std :: string? - 代码日志