C风格字符串
发表时间:2006-07-07 02:00:07 关键词:C++,MFC,VC,Primer,编程,教程,读书
(点击:) 把这篇文章告诉我的QQ或MSN朋友
给这篇文章定下这个标题,是因为书中就是这样说的。本书是讲解C++的,所以它推荐读者尽量使用C++的内容,而实际上像我这样从C过来的人,还是习惯于使用C风格的字符串。——我又想起了那句话:“原来我只是一个‘古代’的C++程序员。”(见《数组》一文)
C语言是用字符数组来做字符串的(当然这个字符数组必需要有一个NULL结尾),因为字符串是如此常用,C语言还专门开发了一套库函数来处理这个特殊的数组。于是,我们进行字符串操作时,可以忘记指针、忘记循环、还可以忘记char这个内置类型。
正是因为如此,林锐博士的《高质量C++/C编程指南》中还特别强调,不可以用指针的赋值和比较来进行字符串的赋值和比较。这个警告对于从VB转过来的人尤其重要。
使用C风格的字符串有两点是必须保证的:一是要给这个数组开劈足够长度的空间;二是一定不要忘了NULL;其中第二点一般程序员不会犯错,因为毕竟没几个人用“chat s[3] = {'a', 'b', '\'0'}”这种方式来定义字符串。第一点就成了重中之重。我们在strcpy之前,有没有考虑过目标字符串可能的空间不足?
“strn”风格的函数既救了大家也可能害了大家,说它救了大家,因为大家在strncpy和strncat时可以控制字符个数,即使源字符串太长,也可以避免内存溢出。但是它存在的危险性是它不会为目标字符串添加NULL。
所以,书写到这里再次做了一个提醒:“尽可能使用标准库类型string”——我都忘了这是第几次提醒了,本书一而再再而三地提醒读者不要做“古代”的C++程序员。
本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
