c++ - 如果不包含<string.h>,为什么我的程序可以成功编译?

标签 c++ string iostream

我对此感到困惑了一段时间。为了对此进行测试,我制作了一个简单的程序,该程序仅创建一个std::string变量并将其打印到屏幕上。但是,它不包含

#include <iostream>

using namespace std;

int main()
{
        string name = "Test";
        cout << name << endl;
        return 0;
}
让我感到困惑的是,该程序可以完美地编译和运行。现在,我正在使用XCode Developer Tools附带的clang编译器。这是预期的行为吗?我希望自从我刚开始学习C++以来,这个问题就不会太荒谬。

最佳答案

您不需要包括#include <string.h>头文件的原因是,当您包括#include <iostream>头文件时,它包括std::string
但是,请不要依赖它。在您的编译器上可能有效的方法在另一编译器上可能无效。始终包括正确的头文件。
要编辑示例,应使用以下示例:

#include <iostream>
#include <string>


int main()
{
        std::string name = "Test";
        std::cout << name << std::endl;
        return 0;
}
另请注意:为什么不应该使用 using namespace std;

关于c++ - 如果不包含<string.h>,为什么我的程序可以成功编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63293660/

相关文章:

c++ - 没有模板也能完美转发吗

C++ 类在类构造上构造成员吗?

c++ - 检测二进制文件数据的字节顺序

python - 使用价格通用解决方案从字符串中删除货币符号和文字

c++ - 如何使用 std::fpos?

c++ - 为用户定义类型重载 QDataStream << 和 >> 运算符

c++ - 如何清空 std::string?

c++ - tr1::reference_wrapper 有什么用?

python - 删除文件第一行的前 32 个字符

mysql - 使用python从mysql字符串中搜索关键字?