字符串类的设计与实现样本.docx

上传人:b****6 文档编号:4781850 上传时间:2022-12-08 格式:DOCX 页数:7 大小:68.45KB
下载 相关 举报
字符串类的设计与实现样本.docx_第1页
第1页 / 共7页
字符串类的设计与实现样本.docx_第2页
第2页 / 共7页
字符串类的设计与实现样本.docx_第3页
第3页 / 共7页
字符串类的设计与实现样本.docx_第4页
第4页 / 共7页
字符串类的设计与实现样本.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

字符串类的设计与实现样本.docx

《字符串类的设计与实现样本.docx》由会员分享,可在线阅读,更多相关《字符串类的设计与实现样本.docx(7页珍藏版)》请在冰豆网上搜索。

字符串类的设计与实现样本.docx

字符串类的设计与实现样本

C++上机实验报告

上机实验名称:

类与对象

实验题目:

字符串类的设计与实现

 

班级:

学号:

姓名:

**********

 

一.实验目的:

1.掌握C++类的概念和基本组成,学会设计类,掌握类的使用方法。

2.了解类的各成员在类中的封装特性。

3.熟悉各种成员函数包括构造、析构及内联等函数的定义与使用。

二.字符串UML图

String

-*m_data:

char

+String(*str:

constchar=NULL):

String

+~String():

String

+String(&other:

constString):

String

+length(*str:

char):

int

+&operator=(&other:

constString):

String

+print():

void

+comparestr(*str1:

constchar,*str2:

constchar):

int

+stringlianjie(*str1:

char,*str2:

char):

void

 

三.调试过程

1.实验前先查阅相关书籍,了解学习关于字符串的内容。

理解本次实验目的,与同组的成员交流。

2.实验时,增加了一些对两个字符串的处理,处理字符串的比较时,对比较的方法有不会的,向老师及同组的同学请教,使用比较ASCII码比较。

3.实验后,进一步学习UML图。

 

四.测试结果

1.输入一个字符串

2..输出对这个字符串的操作

3..输入两个字符串

4..输出对这两个字符串的处理

 

五.程序代码:

#include

#include

#include

#include

usingnamespacestd;

classString

{

public:

String(constchar*str=NULL);

String(constString&other);

~String();

intlength(char*str);

String&operator=(constString&other);

voidprint();

intcomparestr(constchar*str1,constchar*str2);

voidstringlianjie(char*str1,char*str2);

private:

char*m_data;

};

intmain()

{

intn,a,c;

charstr[100],str1[100];

charda[4][10]={"",">","==","<"};

while

(1)

{

cout<<"Onasinglestringoperationspleasepress1,thestringcomparisonbetweenpleasepress2,endpleasepress3"<

cin>>n;

if(n==1)

{

cout<<"Pleaseenterastring"<

cin>>str;

Stringobj(str);

obj.print();

Stringobj1(obj);

obj1.print();

a=obj1.length(str);

cout<<"Thelengthofthestringis:

"<

cout<

Stringobj2;

obj2.print();

obj2=obj1;

obj2.print();

getchar();

}

elseif(n==2)

{

cout<<"Pleaseenterthetwostrings"<

cin>>str>>str1;

Stringobj;

a=obj.length(str);

cout<<"Thefirstisthelengthofthestring:

"<

a=obj.length(str1);

cout<<"Thesecondisthelengthofthestring:

"<

cout<<"Comparetwostrings"<

c=parestr(str,str1);

cout<

cout<<"Twostringsconnection"<

obj.stringlianjie(str,str1);

cout<

getchar();

}

elseif(n==3)exit(0);

elsecout<<"nputerror,pleaseinputagainoption"<

}

cout<

 

return0;

}

String:

:

~String(void)

{

cout<<"String的析构函数调用"<

delete[]m_data;

}

voidString:

:

stringlianjie(char*str1,char*str2)

{

inti=0,j=0;

while(str1[i]!

='\0')

i++;

while(str2[j]!

='\0')

{

str1[i]=str2[j];

i++;

j++;

}

str1[i]='\0';

}

intString:

:

comparestr(constchar*str1,constchar*str2)

{

if(stricmp(str1,str2)>0)

return1;

elseif(stricmp(str1,str2)==0)

return2;

else

return3;

}

String:

:

String(constchar*str)

{

if(str==NULL)

{

m_data=newchar[1];

*m_data='\0';

}

else

{

intlength=strlen(str);

m_data=newchar[length+1];

strcpy(m_data,str);

}

}

String:

:

String(constString&other)

{

cout<<"拷贝构造函数"<

intlength=strlen(other.m_data);

m_data=newchar[length+1];

strcpy(m_data,other.m_data);

}

String&String:

:

operator=(constString&other)

{

cout<<"赋值函数"<

if(this==&other)

return*this;

delete[]m_data;

intlength=strlen(other.m_data);

m_data=newchar[length+1];

strcpy(m_data,other.m_data);

return*this;

}

intString:

:

length(char*str)

{

intL=0;

while(str[L]!

='\0')

L++;

returnL;

}

voidString:

:

print()

{

cout<

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1