Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1891580
  • 博文数量: 152
  • 博客积分: 3730
  • 博客等级: 上尉
  • 技术积分: 3710
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-02 14:36
个人简介

减肥,运动,学习,进步...

文章分类

全部博文(152)

文章存档

2016年(14)

2015年(17)

2014年(16)

2013年(4)

2012年(66)

2011年(35)

分类: C/C++

2012-07-18 14:26:48

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) |
给主人留下些什么吧!~~