关闭

关闭

封号提示

内容

首页 C++语言string类的实现(完整源代码).pdf

C++语言string类的实现(完整源代码).pdf

C++语言string类的实现(完整源代码).pdf

上传者: 永生换魂 2014-02-23 评分1 评论0 下载1 收藏0 阅读量734 暂无简介 简介 举报

简介:本文档为《C++语言string类的实现(完整源代码)pdf》,可适用于IT/计算机领域,主题内容包含MyString类完整源代码MyStringh文件*************************************************符等。

MyString类完整源代码MyStringh文件***********************************************************Copyright(c)道合|SameIdealcomAllrightsreserved************************************************************#ifndefMYSTRINGH#defineMYSTRINGH#include<iostream>usingnamespacestdclassMyString{public:构造函数MyString()MyString(constMyString)MyString(constchar*)MyString(constsizet,constchar)析构函数~MyString()属性sizetlength()字符串的长度boolempty()字符串是否为空constchar*cstr()返回C风格字符串的指针读写操作符friendostreamoperator<<(ostream,constMyString)friendistreamoperator>>(istream,MyString)‘’操作符friendMyStringoperator(constMyString,constMyString)比较操作符friendbooloperator==(constMyString,constMyString)friendbooloperator!=(constMyString,constMyString)friendbooloperator<(constMyString,constMyString)friendbooloperator<=(constMyString,constMyString)friendbooloperator>(constMyString,constMyString)friendbooloperator>=(constMyString,constMyString)下标操作符charoperator(constsizet)constcharoperator(constsizet)const赋值操作符MyStringoperator=(constMyString)'='操作符MyStringoperator=(constMyString)子串操作MyStringsubstr(sizet,sizet)添加操作MyStringappend(constMyString)插入操作MyStringinsert(sizet,constMyString)替换操作MyStringassign(constMyString,sizet,sizet)删除操作MyStringerase(sizet,sizet)private:sizetstrLengthchar*pstr}#endifMyStringcpp文件***********************************************************Copyright(c)道合|SameIdealcomAllrightsreserved************************************************************#include"MyStringh"#include<cassert>MyString::MyString():strLength(),pstr(){}MyString::MyString(constMyStringstr){strLength=strstrLengthpstr=newcharstrLengthstrcpy(pstr,strpstr)}MyString::MyString(constchar*str){if(str==)returnstrLength=strlen(str)pstr=newcharstrLengthstrcpy(pstr,str)}MyString::MyString(constsizetlen,constcharch){strLength=lenpstr=newcharstrLength*(pstrstrLength)=''strset(pstr,ch)}MyString::~MyString(){deletepstr}sizetMyString::length(){returnstrLength}boolMyString::empty(){returnstrLength==true:false}constchar*MyString::cstr(){returnpstr}输出操作符ostreamoperator<<(ostreamout,constMyStringstr){if(strpstr!=)out<<strpstrreturnout}输入操作符istreamoperator>>(istreamin,MyStringstr){chartemp临时字符串数组if(in>>temp){deletestrpstrstrstrLength=strlen(temp)strpstr=newcharstrstrLengthstrcpy(strpstr,temp)}returnin}下标操作符charMyString::operator(constsizetindex){assert(index>=index<=strLength)returnpstrindex}下标操作符(const情况)constcharMyString::operator(constsizetindex)const{assert(index>=index<=strLength)returnpstrindex}''操作符的重载MyStringoperator(constMyStringlhs,constMyStringrhs){MyStringretretstrLength=lhsstrLengthrhsstrLengthretpstr=newcharretstrLengthstrcpy(retpstr,lhspstr)strcat(retpstr,rhspstr)returnret}赋值操作符MyStringMyString::operator=(constMyStringstr){if(this!=str){if(strLength<strstrLength){deletepstrpstr=newcharstrstrLength}strLength=strstrLengthstrcpy(pstr,strpstr)}return*this}'='操作符MyStringMyString::operator=(constMyStringstr){if(this==str){MyStringcopy(str)return*this=copy}strLength=strstrLengthchar*pold=pstrpstr=newcharstrLengthstrcpy(pstr,pold)deletepoldstrcat(pstr,strpstr)return*this}比较操作符booloperator==(constMyStringlhs,constMyStringrhs){returnstrcmp(lhspstr,rhspstr)==}booloperator!=(constMyStringlhs,constMyStringrhs){returnstrcmp(lhspstr,rhspstr)!=}booloperator<(constMyStringlhs,constMyStringrhs){returnstrcmp(lhspstr,rhspstr)<}booloperator<=(constMyStringlhs,constMyStringrhs){returnstrcmp(lhspstr,rhspstr)<=}booloperator>(constMyStringlhs,constMyStringrhs){returnstrcmp(lhspstr,rhspstr)>}booloperator>=(constMyStringlhs,constMyStringrhs){returnstrcmp(lhspstr,rhspstr)>=}子串操作返回一个MyString类型的字符串它包含源字符串中从下标pos开始的n个字符MyStringMyString::substr(sizetpos,sizetn){assert(posn<=strLength)MyStringretretstrLength=nretpstr=newcharretstrLengthfor(sizeti=i!=ni)reti=(*this)posiretn=''returnret}添加操作将一个字符串的副本添加到源字符串的末尾同“=”操作符类似MyStringMyString::append(constMyStringstr){*this=strreturn*this}插入操作在下标为pos的元素之前插入MyString对象str的副本MyStringMyString::insert(sizetpos,constMyStringstr){assert(pos<strLength)char*pold=pstrstrLength=strstrLengthpstr=newcharstrLengthfor(sizeti=i!=posi)*(pstri)=*(poldi)for(sizeti=posi!=strstrLengthposi)*(pstri)=*(strpstripos)for(sizeti=strstrLengthposi!=strLengthi)*(pstri)=*(poldistrstrLength)*(pstrstrLength)=''deletepoldreturn*this}替换操作用s中从下标pos开始的len个字符副本替换源字符串MyStringMyString::assign(constMyStrings,sizetpos,sizetlen){if(strLength<len){strLength=lendeletepstrpstr=newcharstrLength}for(sizeti=i!=leni)*(pstri)=sposi*(pstrstrLength)=''return*this}删除操作删除从下标pos开始的len个字符MyStringMyString::erase(sizetpos,sizetlen){assert(poslen<=strLength)sizetindex=poslenwhile(*(pstrindex)!=''){*(pstrindexlen)=*(pstrindex)index}*(pstrindexlen)=''return*this}本文首次发表在道合|sameidealcom欢迎大家访问我的独立技术博客~

类似资料

编辑推荐

与心对话.pdf

日本藏中国罕见地方志丛刊 (成化)湖州府志 (万历)六安州志 (崇祯)乌程县志.pdf

四川名家经方实验录.pdf

施今墨医桉解读.pdf

信息处理技术员.pdf

职业精品

精彩专题

加快生态文明体制改革,建设美丽中国

人类的发展与自然环境的保护密切相关,而生态文明建设就是把人类的可持续发展提升到绿色的高度。作为中国特色社会主义的重要内容,生态文明建设关乎到人类的未来。加快生态文明体制改革,事关中华民族伟大复兴中国梦的实现。

用户评论

0/200
    暂无评论
上传我的资料

精选资料

热门资料排行换一换

  • 性别与表演读本.pdf

  • 英文-性别平等的代价.pdf

  • 腕踝针疗法(第二版张心曙).pdf

  • 丹贝旺旭仁波切《金刚密乘大圆满—…

  • 起重船培训.pdf

  • 100个句子记完5000个英语单…

  • 借药引藏玄机--名医药引趣话.p…

  • 新日语基础教程2学习辅导用书.p…

  • Introduction to …

  • 资料评价:

    / 7
    所需积分:1 立即下载

    意见
    反馈

    返回
    顶部