这是我的代码:
#include <iostream>
int main(int argc, char const *argv[])
{
std::string s = "hello";
std::cout << s.size() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,我可以编译并运行它clang++,虽然我甚至不添加#include <string>.
那么,是否有必要添加#include <string>才能使用std::string?
Tar*_*ama 11
您的实现的iostream标头包括string.这不是你可以或应该依赖的东西.如果要使用std::string,则应始终使用#include <string>,否则您的程序可能无法在不同的实现上运行,甚至在当前版本的更高版本中运行.
lis*_*rus 10
简而言之:是的,有必要。
标准库的某些部分经常使用其他部分,因此<string>通过某种方式包含在内<iostream>,并且您的代码可以很好地编译。
如果您不小心决定不再需要<iostream>并删除该包含,则该包含<string>也将被隐式删除,并且您会收到令人困惑的编译错误。这就是为什么放置所有必要的内容是一个好习惯。