C++中的字符串类型.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++中的字符串类型 1.字符(串)表示分类 C++提供了两种字符串的表示形式,即C风格的字符串和标准字符串。 C++引入的是string 类类型,但实际上在许多程序的情形中我们有必要理解和使用老式的C 风格字符串。总共包括以下几种类型: a.char? b.wchar_t c.TCHAR c.LPSTR d.LPCSTR e.LPTSTR f.LPCTSTR g.Cstring h.string i.BSTR 2.C风格字符串 C 风格的字符串起源于C 语言并在C++中继续得到支持,实际上在标准C++之前除了第三方字符串库类之外它是惟一一种被支持的字符串。字符串被存储在一个字符数组中,一般通过一个char*类型的指针来操纵它,标准C 库为操纵C 风格的字符串提供了一组函数例如:// 返回字符串的长度int strlen( const char* );// 比较两个字符串是否相等int strcmp( const char*, const char* );// 把第二个字符串拷贝到第一个字符串中char* strcpy(char*, const char* );标准C 库作为标准的C++的一部分被包含在其中为使用这些函数我们必须包含相关的C 头文件#include cstring指向C 风格字符串的字符指针总是指向一个相关联的字符数组,即使当我们写一个字符串常量时,如:const char *st = The expense of spirit\n;系统在内部也把字符串常量存储在一个字符串数组中,然后st 指向该数组的第一个元素。那么我们怎样以字符串的形式来操纵st 呢?一般地我们用指针的算术运算来遍历C 风格的字符串,每次指针增加1 直到到达终止空字符为止例如:while ( *st++ ) { ... }char*类型的指针被解除引用并且测试指向的字符是true 还是false 。true 值是除了空字符外的任意字符(空字符在判断语句中被莫认为是假),++是增加运算符它使指针指向数组中的下一个字符。一般来说当我们使用一个指针时在解除指针的引用之前测试它是否指向某个对象是必要的,否则程序很可能会失败例如:intstring_length( const char *st ){int cnt = 0;if ( st )while ( *st++ )++cnt; return cnt;}?3、C++字符串类型要使用string 类型必须先包含相关的头文件#include string例如下面是上一小节定义的字符数组#include stringstring st( The expense of spiritn );st 的长度由size()操作返回不包含终止空字符cout The size of st is st.size() characters, including the newlinen;string 构造函数的第二种形式定义了一个空字符串,例如string st2; // 空字符串我们怎样能保证它是空的当然一种办法是测试size()是否为0if ( ! st.size() )// ok:?空更直接的办法是使用empty()操作if ( st.empty() )// ok: 空如果字符串中不含有字符则empty()返回布尔常量true ,否则返回false第三种形式的构造函数用一个string 对象来初始化另一个string 对象,例如string st3( st );将st3 初始化成st 的一个拷贝,怎样验证呢?等于操作符比较两个string 对象,如果相等则返回trueif ( st == st3 )// 初始化成功怎样拷贝一个字符串呢?最简单的办法是使用赋值操作符,例如st2 = st3; // 把st3 拷贝到st2 中首先将与st2 相关联的字符存储区释放掉,然后再分配足够存储与st3 相关联的字符的存储区。最后将与st3 相关联的字符拷贝到该存储区中。我们可以使用加操作符+ 或看起来有点怪异的复合赋值操作符+= 。将两个或多个字符串连接起来。例如:给出两个字符串string s1( hello, );string s2( worldn );我们可以按如下方式将两个字符串连接起来,形成第三个字符串string s3 = s1 + s2;如果希望直接将s2 附加在s1 后面那么可使用+= 操作符s1 += s2;s1 和s2 的初始化包含了一个空格一个逗号以及一个换行,这多少有些不方便,它们的存在限制了对这些string 对象的重用,尽管它满足了眼前的需要。一种替代做法就是混合使用C 风格的字符串与string 对象。如下所示:const char *pc = , ;string s1( hello

文档评论(0)

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

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

1亿VIP精品文档

相关文档