VC驿站--编写一个精简版的string类.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文档。上传文档
查看更多
VC驿站--编写一个精简版的string类

编写一个精简版的string类该类的具体功能如下所示.1 计算字符串的长度,类似于string类的size或者length2 可对字符串进行赋值,如String str=hello world;3 可将char型字符串直接赋给String型字符串,如:String str=Hello world;char ch[10]=not at all;str=ch;4 可如同对象那样将字符串进行初始化,String str(Mother);5 可将两个字符串相加,然后将合并后的字符串赋给另一个字符串,如String str=s2+s3;6 可执行加等操作(+=),也就是将第1个字符串与第2个字符串相加,然后再赋给第1个字符串,如:String s1+=s27 可对两个字符串进行比较,如str1==str2,str1str2或者str1str2.8 可根据字符串的大小自动调节保存字符串的数组的大小。9 限制数组越界10通过成员函数输出字符串,如s1.getlen()。11 通过重载输出运算符输出字符串,如:string s1(hello),s2(good);couts1s2;12 通过重载输入运算符输入字符串,如:cins1s2创建String类上节简单地对精简版的String类的功能进行了介绍,本节首先实现这个String类。我们知道C++自带的String类在声明一个字符串后,如:String s;该字符串s仅仅是声明,并未初始化,因此该字符串是个空字符,只保存了结束符号\0。我们首先来实现这个功能。由于对象的创建是通过构造函数来实现的,因此我们可以通过默认构造函数来构造一个空字符串。通过String类的默认构造函数实现空字符串。程序代码如下:#include iostreamusing namespace std;class String{public:? ? ? ? String();? ? ? ? int getlen()const{return len;}private:? ? ? ? int len;? ? ? ? char *str;};String::String(){? ? ? ? len = 0;? ? ? ? str=new char[1];? ? ? ? str[0]=\0;}int _tmain(int argc, _TCHAR* argv[]){? ? ? ? String s1;? ? ? ? couts1.getlen();? ? ? ? system(pause);? ? ? ? return 0;}输出:0分析:第6行声明了一个默认构造函数,第12~17行是该函数的定义部分。第14行将所创建的字符串的长度len设置为0,len在第9行定义。第15行在堆中创建一个char型数组,该数组只有一个元素,str保存该数组的地址,char型指针str在第10行定义。第16行将char型数组str中唯一一个元素保存结束字符\0,因此该char型数组变成了一个字符串,一个长度为0的空字符串。main函数开始于第19行,第20行用我们创建的String类声明了一个字符串s1,然后第21行输出该字符串的长度,为0.成员函数getlen()在第7行定义,它的作用是返回字符串长度len的值。创建可以自动调节大小的String类字符串对象本节我们将在已创建空字符串的基础上创建一个有字符的字符串,并且该字符串课根据字符的长度自动调节数组的大小。要实现这个功能,我们需要一个带参数的构造函数,如: String::String(const char*const ch){? ? ? ? len = strlen(ch);? ? ? ? str = new char[len+1];? ? ? ? for(int i=0;ilen;i++)? ? ? ? ? ? ? ? str[i] = ch[i];? ? ? ? str[len]=\0;}复制代码这样,假如我们定义并初始化了一个字符串,如String s(Hello world); 就会自动调用这个带一个参数的构造函数,同时将hello world传递到函数中,ch接收了这个字符串,第3用strlen计算hello world的长度,也就是ch的长度,该长度同时赋给String 类的私有成员变量len。第4行在堆中创建了一个char型数组,它的长度是len+1,最后一个字符用来保存结束符\0。该char型数组的内存地址赋给String类的私有指针成员变量str。第5~6行是一个for循环,从字符串ch第1个字符开始,也就是hello world,每循环一次,即将ch中的一个字符赋给str指向的在堆中创建的char型数组,一直到结束字符前的最后一个字符为止。最后一行用str指向的在堆中

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档