Cpp--处理字符串的自定义类
来源:互联网 发布:网络营销推广软件 编辑:程序博客网 时间:2024/05/16 19:32
关于拷贝函数建立的处理字符串的函数,比较实用,贴上来供大家学习:
#include<iostream>using namespace std;class myString2{char *str;int len;public:myString2(char *s);myString2(myString2& str);~myString2();void strOut();void strCat(myString2 str2);int strCmp(myString2 str2);};myString2::myString2(char *s){ char *tmp=s;while(*tmp++);int sLen=tmp-s;str=new char[sLen+1];int i=0;while(s[i]){str[i]=s[i];i++;}str[i]='\0';len=i;}myString2::myString2(myString2&s){ //拷贝构造函数int sLen=s.len;str= new char[sLen+1];int i=0;while(s.str[i]){str[i]=s.str[i];i++;}str[i]='\0';len=i;}myString2::~myString2(){ if(str!=NULL)delete []str;}void myString2::strOut(){if(str!=NULL)cout<<"str="<<str<<endl;elsecout<<"empty!"<<endl;}void myString2::strCat(myString2 str2){ //将str2连接到str后,先申请一个新空间储存int newLen; //str新长度char *tmp,*head;newLen=len+str2.len;tmp=new char[newLen+1]; //动态申请恰好的空间放字符串head=tmp;int j=0;if(str!=NULL){ //调用者对象str串不为空,放入新申请的空间中。释放调用者对象的原str串空间。while(str[j])*tmp++=str[j++];delete str;}j=0;while(str2.str[j])*tmp++=str2.str[j++];*tmp='\0';len=newLen;str=head;}int myString2::strCmp(myString2 str2){ //两字符串相比较int i=0;while(str[i]!='\0'&&str2.str[i]!='\0'){if(str[i]>str2.str[i])return 1;if(str[i]<str2.str[i])return -1;i++;}if(str[i]=='\0'&&str2.str[i]=='\0')return 0; //字符完全相同if(str[i]!='\0')return 1; //str串大(str串未结束)elsereturn -1;}void main(){myString2 obj1("12345"); //通过类对象对成员函数进行调用myString2 obj2("abcdefg");myString2 obj3("333");myString2 obj4=obj2; //必须情况之一,调用拷贝构造函数cout<<"obj1: ";obj1.strOut();cout<<"obj2: ";obj2.strOut();cout<<"obj3: ";obj3.strOut();cout<<"obj4: ";obj4.strOut(); obj1.strCat(obj2);//实参为类对象,调用拷贝构造函数cout<<"obj1=>"; obj1.strOut();obj2.strCat(obj3);cout<<"obj2=>"; obj2.strOut();int i=obj1.strCmp(obj1);cout<<"i="<<i;i=obj1.strCmp(obj3);cout<<" i="<<i;i=obj3.strCmp(obj1);cout<< " i="<<i<<endl;}结果:
0 0
- Cpp--处理字符串的自定义类
- [CPP]宏的字符串处理
- cpp:处理字符串与数字的混合输入(动态数组)
- cpp的处理流
- 自定义字符串处理函数
- 自定义的字符串类
- 【字符串处理】文明的复兴 words.pas/c/cpp/in/out
- 20170517_C风格字符串的处理函数的自定义
- C#中字符串处理的一些自定义方法
- C#中字符串处理的一些自定义方法
- C#中字符串处理的一些自定义方法
- 字符串每个单词的反转.cpp
- cpp: 读取字符串的最简便方式
- Cpp的异常处理Exception Handling-笔记
- 一个简单的CPP处理框架
- Flex(actionscript3.0)字符串处理类库(自定义)
- Flex(actionscript3.0)字符串处理类库(自定义)
- 【COCOS2DX-LUA 脚本开发之十四】解决自定义CPP类通过TOLUA++ BINDING LUACOCOS2D后编译到ANDROID运行黑屏(没有调用自定义CPP类)的问题!
- 本地升级的步骤
- android逆向分析中常用的smali注入代码
- NETBIOS名 和 Host名的不同
- NestedScrollView嵌套ViewPager
- 关于百度云、极光的推送的问题,为什么控制台发送消息成功,而手机端接收不到消息
- Cpp--处理字符串的自定义类
- hrbust 哈理工oj 2113 Count【STL水题】
- js数组排序神器
- process launch failed: Security 解决方案
- 用U盘制作启动盘后空间变小的恢复方法
- 排序算法:希尔排序
- 2016.3.7 16.14复习篇之三(蓝桥杯恶补)
- 不使用递归和栈遍历二叉树
- Gallery与ImageSwitch实现照片的预览功能