网站大量收购独家精品文档,联系QQ:2885784924

第8讲 字符串.pptVIP

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8讲 字符串 C++课件 字符串的概念 字符串(string)是由双引号“”所包括起来的一串文字。字符串在内存中的储存方式很特别,除了我们看到的文字外,其后还多加一个‘\0’字符,亦即空字符(NULL character)。它的ASCII值为0,作为字符串的结束标记。 特别需要注意的是:英文字母,空格和标定符号都在1个字节,而每个中文占据2个字节。而对于英文字母,空格和标定符号有两种写法,占1个字节的称为ASCII码,占两个字节的称为全角码。 字符串的概念 全角码实际是缘于微软公司在远东地区的Windows本版,它使用DBCS码(双字节字符集,Double-Byte Character Set)用来支持远东地区许多象形文字的表达,如中文,日文,韩文等。在这种字符集中大于128的ASCII码字符作为前导字符(而这部分字符通常不显示),并不代表实际意义,而是会自动与下一个字节结合在一起来表示一个完整的远东字符。如果把全角的字符当成一个字符输出时,通常造成输出结果被扭曲,这一点需要注意。 半角与全角的输入法区别 运行结果 C风格的字符串和标准string类型 1.字符串可以视为由字符(数据类型为char)构成的一维数组,也可以将字符串的首地址给予char指针(又称之为C风格的字符串,C-style string)。因此可以有下列两种声明字符串的方式: char S1[20]=“hello!”;//数组式的声明 char S1[]=“hello!”;//数组式的声明,省略维数 char *pS2=“hello!”;//指针式的声明,C风格 将字符串视为一维char数组时,可以采用逐一列出各字符的方式设定字符串的值。譬如: char S3[10]={‘T’,’h’,’e‘,’ ‘,’b’,’o’,’y’}; 此处的空格一定为:‘ ’,如果不慎写成‘’(没有空格),将会造成语法错误。 二维字符串数组 字符串数组实际就是一个二维字符数组。例如: char sarr[3][21];//说明了一个包含五个字符串,且每个字符串的最大长度为20的字符串数组。 与多维数组一样,字符串数组也允许进行初始化,如:char sarr[3][21]={“C++ language”,”C langguage”,”C++ is better than C”}; 图例如下: C风格的字符串和标准string类型 2.C风格字符串不方便的地方是,如果看作为字符组的话,必须事先确定该数组的大小,通常造成要么数组太小,不够容纳字符串的字符,要么太大,造成内存空间的浪费。对于现代的标准string类型来说,是存在这个问题,而且使用非常方便。 例如:string s1;//标准字符串 s1=“abcde”; 使用string必须在头文件纳入string这个头文件,这里string可以类似于一个普通的数据类型来使用。 标准的string类型虽然好用,而实际上它是基于类和模板的,我们将在后续的课程讲述到。 运行结果 以指针的方式定义字符串 例如:char* ps2=“hi,你好!”; 这个语句在执行的时候完成了两项工作: (1)在内存单元存入字符串“hello,你好”。 (2)将此字符串第一个字符的地址(即h的地址)存入指针ps2中。如下图所示: 以指针的方式定义字符串 提示:只有字符串的双引号才可以配合字符串指针的初始化使用。例如: char* pS3=“good luck!”; 或是可以分开成两个语句: char* pS3; pS3 =“good luck!”;//这里不可以理解为指针pS3的内容为字符串“good luck!”。 然而 char* pS3={‘b’,’o’,’y’}; 是错误的。 字符串的输入输出 下表列出字符和字符串的输入输出设相关函数。在运用它们时,需要在程序的开头纳入头文件iostream: 字符串的输出指令 一般而言, coutxendl;//输出x的内容直接输出。 如果x是指针,则输出x的内容——地址。但是上面的这个规则对于字符串指针串指针不适用(string pointer)。 这是因为cout在遇到字符串的指针或字符串的起始地址时,会自动将输出改为字符串的内容,而不是将地址输出。此外,由于字符串都明显的‘\0’作为结尾,因此,只有‘\0’之前的部分会输出,其后的部分就忽略不计。 字符串输输入指令 例如:char S1[20]=“Hello,你好!”; char* pS=S1; 以下输出语句均为输出字符串的内容: “Hello,你好!” coutpS; coutS1; coutS1[0]; coutpS [0]; 如果的确想输出某个字符串的地址,需使用特殊的语法: cout(void*)S1; c

文档评论(0)

1234554321 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档