std::string 可以在没有 #include 的情况下使用<string>吗?



这是我的代码:

#include <iostream>
int main(int argc, char const *argv[])
{
    std::string s = "hello";
    std::cout << s.size() << std::endl;
    return 0;
}

令我惊讶的是,我可以使用clang++编译并运行它,尽管我甚至不添加#include <string>

那么,是否需要添加#include <string>才能使用std::string

您的实现的iostream标头包括string。这不是你可以或应该依赖的东西。如果你想使用std::string,你应该始终使用#include <string>,否则你的程序可能无法在不同的实现上运行,甚至无法在当前版本的更高版本中运行。

简而言之:是的,这是必要的。

标准库的部分通常使用其他部分,所以<string>是通过<iostream>以某种方式包含的,您的代码编译得很好。

如果您意外地决定不再需要<iostream>并删除该include,那么<string>也将被隐式删除,并且会出现令人困惑的编译错误。这就是为什么放置所有必要的include是一种很好的做法。

有些标头可能包含其他标头,但这是一个实现问题,不能指望。请始终明确包含所需的标头。

iostream包含<string>。它涟漪般地流过。

实际上,这取决于实施,而不是保证。您应该明确地包含所需的标头。

相关内容

  • 没有找到相关文章

最新更新