今天做题的时候发现的一个情况,明显我学的不行,居然现在才发现这个事情。
某个题目中,我写了下面这段代码,报错。
#include <string.h>
string a, b;
之后又变更头文件,写出了下面这段代码,过了。
#include <string>
using namespace std;
string a, b;
这段代码过了,很明显,<string.h>和<string>有区别。
经过查阅资料发现,<string.h>是c中的,<string>是c++中的,这句话其实有另外一个意思。
在c++中,如果要使用<string.h>头文件的话,用的是<cstring>,<string.h>这个头文件是c中的,c中是没有面向对象这个概念的,所以不存在类,对象这种东西。
string a;就相当于建立了一个string类的对象a,所以就过了。而在c中,<string.h>这个头文件,只是对字符串进行处理的函数,是对char *类型的数据所做处理。