C++中cstring、string、string.h的区别


在学习算法题的过程中,最常见的就是字符串输入,一般都会涉及到几个不同的头文件,这里总结一下这几个同文件的异同之处。

是C语言中和字符串相关的头文件。C语言的内置数据类型中不包括字符串,只有字符数组char[],中将字符数组的一些常用操作封装在其中,包含比如strlen、strcmp、strcpy、strcat之类的字符串处理函数。要注意它对应的是字符数组,本身并不是字符串数据类型。

在C++标准化过程中,C++为了向前兼容C语言,标准化组织将所有C语言的头文件都进行了新的定义,加入到了标准库中,加入后的文件名就新增了一个"c"前缀并且去掉了.h的后缀名,所以头文件成了头文件,其实现是相同的或是兼容以前的。要注意,此时的依然不是对应着string数据类型,仍然是字符数组char[]

是C++标准定义的头文件,它定义了一个string的字符串类,里面包含了string类的各种操作,如s.size(), s.erase(), s.insert()等。
又包含了老的C版本的字符串操作如strcmp、strcpy、strcat等,这就相当于,在的文件中除了定义自己的string类之外,还加了一个#include一句包含了C版本的字符串操作。但是中并没有完全包含中所有的方法,并不能认为= + string类型。
是新标准,定义了namespace std; 而虽然也是新标,但是定义中包含的是string.h。所以中可以进行+ = += >等运算,而中不能进行相关运算。