C++中的字符串因为有了标准库string的引入,使得字符串的处理也变得容易了,但是在也会导致一个新的问题,在C语言中的一些字符串处理问题也随之而来啦。
在C++中的字符串string与C语言中的字符串存在较大的区别,首先我们知道在C语言中字符串是字符串常量,是以null结尾的字符串,通常我们可以将字符串看做是一个以null字符结尾的字符数组,但是如前面的文章中已将分析了字符串和字符数组并不是等价的,而是存在一定的差别的。在C语言中字符串就是一个常量,是不能修改的,对字符串的修改都会导致意外的结果。
但是有时候C++也要处理关于C语言的一些问题,这时候我们需要采用cstring库,该库与C语言中的string.h有很大的相似性,很多函数也是一致的。其中很多函数比如:strcat,strcpy,strncpy,strlen,strcmp等函数都存在的,这时候也是以null作为字符串的结尾符的。
首先说明一下C++中的字符串string,这时候的string与C语言中的字符串存在很大的差别,首先string是一个标志库,是一种类型,该类型的变量是可以复制的,可以被修改的,也不是以null结尾的。而C语言中的字符串可以认为是一个字符串字面值,是不能修改的。
同样在字符串长度上也存在一定的差别,在string中采用该标准库提高的size()函数确定字符串的长度,而C语言中的字符串则需要采用sizeof或者strlen函数来判断,通常strlen的值是不包含null的,但是sizeof是包含null的。
在指针操作过程中存在一定的差别,在string中,string *类型的指针指向一个string对象,而C语言中字符串的指针通常是把字符串当做数组处理,这时候指针指向的字符串的首个元素。这些都是在C++中处理时应该注意的问题。
正如在给C++初学者的50个建议中提到的,不要把C++当做C的扩展,而应该当做一种新的语言学习,每一种语言有一种思想。
阅读(1579) | 评论(0) | 转发(0) |