一级棒(Eachfun)
偷猫的个人主页
C风格字符串
发表时间:2006-07-07 02:00:00 关键词:C++,MFC,VC,Primer,编程,教程,读书

  给这篇文章定下这个标题,是因为书中就是这样说的。本书是讲解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)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
相关评论
发表评论
称呼:
QQ:
邮箱:
链接:
内容:
搜索: 百度搜索 Google搜索
Copyright©2000 - 2011 Eachfun.Com, All Rights Reserved 一级棒网络
备案号忘了带来
一级棒建站系统 http://www.eachfun.com 一级棒版权所有,未经许可不得商用!