- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.2字符序列
3.2 字符序列(Character Sequences)前面基础知识部分讲C++变量类型的时候,我们已经提到过C++的标准函数库提供了一个string类来支持对字符串的操作。然而,字符串实际就是一串连续的字符序列,所以我们也可以用简单的字符数组来表示它。例如,下面这个数组:char jenny [20];是一个可以存储最多20个字符类型数据的数组。你可以把它想象成:理论上这数组可以存储长度为20的字符序列,但是它也可以存储比这短的字符序列,而且实际中常常如此。例如,jenny 在程序的某一点可以只存储字符串Hello 或者Merry christmas。因此,既然字符数组经常被用于存储短于其总长的字符串,就形成了一种习惯在字符串的有效内容的结尾处加一个空字符(null character)来表示字符结束,它的常量表示可写为0 或\0。我们可以用下图表示jenny (一个长度为20的字符数组) 存储字符串Hello 和Merry Christmas : 注意在有效内容结尾是如何用空字符null character (\0)来表示字符串结束的。 后面灰色的空格表示不确定数值。初始化以空字符结束的字符序列(Initialization of null-terminated character sequences)因为字符数组其实就是普通数组,它与数组遵守同样的规则。例如,如果我们想将数组初始化为指定数值,我们可以像初始化其它数组一样用:char mystring[] = { H, e, l, l, o, \0 };在这里我们定义了一个有6个元素的字符数组,并将它初始化为字符串Hello 加一个空字符(null character \0)。除此之外,字符串还有另一个方法来进行初始化:用字符串常量。在前几章的例子中,字符串常量已经出现过多次,它们是由双引号引起来的一组字符来表示的,例如:the result is: 是一个字符串常量,我们在前面的例子中已经使用过。与表示单个字符常量的单引号()不同,双引号 ()是表示一串连续字符的常量。由双引号引起来的字符串末尾总是会被自动加上一个空字符 (\0) 。因此,我们可以用下面两种方法的任何一种来初始化字符串mystring:char mystring [ ] = { H, e, l, l, o, \0 };char mystring [ ] = Hello; 在两种情况下字符串或数组mystring都被定义为6个字符长(元素类型为字符char):组成Hello的5个字符加上最后的空字符(\0)。在第二种用双引号的情况下,空字符(\0)是被自动加上的。注意:同时给数组赋多个值只有在数组初始化时,也就是在声明数组时,才是合法的。象下面代码现实的表达式都是错误的:mystring = Hello;mystring[ ] = Hello;mystring = { H, e, l, l, o, \0 }; 因此记住:我们只有在数组初始化时才能够同时赋多个值给它。其原因在学习了指针(pointer)之后会比较容易理解,因为那时你会看到一个数组其实只是一个指向被分配的内存块的常量指针(constant pointer),数组自己不能够被赋予任何数值,但我们可以给数组中的每一个元素赋值。在数组初始化的时候是特殊情况,因为它不是一个赋值,虽然同样使用了等号(=) 。不管怎样,牢记前面标下画线的规则。给字符序列的赋值因为赋值运算的lvalue只能是数组的一个元素,而不能是整个数组,所以,用以下方式将一个字符串赋给一个字符数组是合法的:mystring[0] = H;mystring[1] = e;mystring[2] = l;mystring[3] = l;mystring[4] = o;mystring[5] = \0; 但正如你可能想到的,这并不是一个实用的方法。通常给数组赋值,或更具体些,给字符序列赋值的方法是使用一些函数,例如strcpy。strcpy (string copy) 在函数库cstring (string.h) 中被定义,可以用以下方式被调用:strcpy (string1, string2);这个函数将string2 中的内容拷贝给string1。string2 可以是一个数组,一个指针,或一个字符串常量constant string。因此用下面的代码可以将字符串常量Hello赋给mystring:strcpy (mystring, Hello);例如: // setting value to string#include iostream.h#include string.hint main () {char szMyName [20];strcpy (szMyName,J. So
您可能关注的文档
最近下载
- 2024《S国际商城多层现浇钢筋混凝土框架结构办公楼设计(附图纸)》9800字.docx VIP
- 一次性使用静脉血样采集针产品技术要求标准2024年.docx VIP
- 数据全生命周期安全管理细则.pdf VIP
- 标准图集-17J008 挡土墙(重力式、衡重式、悬臂式) 无水印.pdf VIP
- 苏教版小学科学五年级上册第三单元教学课件.pptx VIP
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案.docx VIP
- 《建筑设备安装识图与施工工艺 》PPT课件(完整版)-设备工程安装与识图PPT大学课件-复习-考试-讲课建筑类课件.pptx
- 麦肯锡问题分析与解决的方法-课件.ppt VIP
- 医疗健康数据安全与患者隐私保护.pptx VIP
- 2025年辽宁省高中语文学业水平合格考试卷试题(含答案).docx VIP
文档评论(0)