c++ - 为什么通过 string.h 访问 C++ 字符串类有效?

标签 c++

在下面的 C++ 程序中,我包含了 string.h 文件,我成功地在其中实例化了 C++ 字符串类并调用了它的一个成员函数:size()。

#include <iostream>
#include <string.h>
using namespace std;

int main( )
{
    string s = "Hello";
    cout << "String: " << s << endl;
    cout << "Size of string: " << s.size() << endl;
    cin.get();
    return 0;    
}

输出是:

String: Hello
Size of string: 5

我正在使用 Dev-C++ 4.9.9.2

我的问题:string.h文件不就是提供了操作C字符串的函数吗?它不包括 C++ 字符串类的定义,对吗?那么,我是如何在不使用 #include <string> 的情况下访问 C++ 字符串类的呢? ?我的理解是string.h文件是C字符串库文件,<string>包括 C++ 字符串库文件。这不对吗?

谢谢!

最佳答案

这是因为 std::string通过 <iostream> 中包含的文件之一定义 header 。流提供了对字符串输入和输出的支持,所以它们需要包含一个字符串头来定义相应的>>。和 <<操作。

关于c++ - 为什么通过 string.h 访问 C++ 字符串类有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12505403/

相关文章:

c++ - 二进制表达式的无效操作数

C++打印 boolean 值,显示什么?

c++ - 从 istream 读取一个 boost::variant 类型

c++ - 如何在方法参数中使用 boost::asio::buffer

python - 如何使用 Python 在文本文件中读取和写入多个值?

c++ - 我如何在此代码中使用键盘交互

c++ - x在变量地址中的意义是什么?

c++ - 好的 C++ 代码可视化/重构工具?

c++ - 让 llvm/clang(来自 brew)在 OSX 上工作

c++ - std::unique_lock::_Owns 数据成员不是原子的?