字符串类设计.docx

上传人:b****4 文档编号:4849043 上传时间:2022-12-10 格式:DOCX 页数:15 大小:56.53KB
下载 相关 举报
字符串类设计.docx_第1页
第1页 / 共15页
字符串类设计.docx_第2页
第2页 / 共15页
字符串类设计.docx_第3页
第3页 / 共15页
字符串类设计.docx_第4页
第4页 / 共15页
字符串类设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

字符串类设计.docx

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

字符串类设计.docx

字符串类设计

华北科技学院计算机学院综合性实验

实验报告

课程名称《C++程序设计B》

实验学期2017至2016学年第二学期

学生所在系部网络工程

年级2015专业班级网络B151

学生姓名学号

任课教师胡英

成绩评定:

1、类及类文件、函数文件设计:

A(),B(),C(),D(),F()

2、程序结构合理,格式美观:

A(),B(),C(),D(),F()

3、语法语义及算法准确:

A(),B(),C(),D(),F()

4、实验结果正确,运行界面:

A(),B(),C(),D(),F()

5、操作熟练,解析完整:

A(),B(),C(),D(),F()

5、报告规范度:

A(),B(),C(),D(),F()

实验成绩

计算机学院制

《C++程序设计》课程综合性实验报告

开课实验室:

基础实验室三2018年6月5日

实验题目

字符串类设计

一、实验目的

掌握类的概念及构造方法;掌握构造函数的定义与使用;掌握友元的定义与使用;掌握运算符的重载定义与使用。

掌握继承和派生概念及应用,掌握多态方法及应用。

二、设备与环境

微型计算机、Windows系列操作系统、VisualC++6.0等编辑软件

三、实验内容

设计字符串类。

重载字符串+(连接)、=(复制)、判断(<、>、==),并编程实现求字符串长度、字符串转换函数(小写转换为大写及大写转换为小写)函数:

MyString();

MyString(char*ptr);

MyString(constMyString&str);

MyStringoperator+(MyString&str);

MyStringoperator=(MyString&str);

MyStringoperator>(MyString&str);

MyStringoperator<(MyString&str);

MyStringoperator==(MyString&str);

friendostream&operator<<(ostream&s,MyString&str);

friendistream&operator>>(istream&s,MyString&str);

MyStringLenString(MyString&str);

MyStringLwrString(MyString&str);

MyStringUprString(MyString&str);

四、设计过程(包括类的数据成员、成员函数、友元函数及主函数,写出主要代码)

classMyString{

public:

MyString(){p=NULL;}

MyString(char*str);

MyString(constMyString&str);

intlength();

MyStringoperator+(MyString&str);

booloperator=(MyString&str);

booloperator>(MyString&str);

booloperator<(MyString&str);

booloperator==(MyString&str);

boolLwrString();

boolUprString();

friendostream&operator<<(ostream&s,MyString&str);

friendistream&operator>>(istream&s,MyString&str);

private:

char*p;

char*getP();

};

intmain(){

MyStringMyString1("ZOO"),MyString2(MyString1),MyString3;

cout<<"MyString1="<

cout<<"inputMyString3"<

cin>>MyString3;

cout<<"MyString3="<

cout<<"MyString3.length="<<(MyString3.length())<

cout<<"MyString3=MyString1resultis:

"<<(MyString3=MyString1)<

cout<<"MyString3="<

MyStringMyString4=MyString1+MyString3;

cout<<"MyString1+MyString3="<

cout<<"inputMyString3"<

cin>>MyString3;

cout<<"MyString1>MyString3resultis:

"<<(MyString1>MyString3)<

cout<<"MyString1

"<<(MyString1

cout<<"MyString1==MyString2resultis:

"<<(MyString1==MyString2)<

cout<<"MyString3.UprString()resultis:

"<<(MyString3.UprString())<

cout<<"MyString3="<

cout<<"MyString1.LwrString()resultis:

"<<(MyString1.LwrString())<

cout<<"MyString1="<

}

五、实验结果(运行界面)及测试数据分析

MyString1("ZOO")调用构造函数MyString:

:

MyString(char*str),MyString2(MyString1)调用复制构造函数MyString:

:

MyString(constMyString&str),MyString3调用构造函数MyString()。

使用运算符重载函数

>>输入字符串对MyString3重新赋值为hello。

MyString3调用成员函数intlength()求得字符串MyString3的长度。

使用运算符重载函数

=把MyString1的值赋给MyString3。

使用运算符重载函数

+把字符串MyString1和MyString3进行连接。

使用运算符重载函数

>和<对字符串MyString1和MyString3进行判断。

使用运算符重载函数==对字符串MyString1和MyString2进行判断。

MyString3调用函数UprString()把字符串小写转换为大写。

MyString1调用函数LwrString()把字符串大写转换为小写。

六、实验总结

通过本学期的课程学习使我对C++程序设计有了初步的认识,也让我对面向对象有了一个更深刻的理解。

本系统虽然仍然存在着不足之处,但对于题目要求实现的功能均已实现。

源代码:

#include

usingnamespacestd;

classMyString{

public:

MyString(){p=NULL;}

MyString(char*str);

MyString(constMyString&str);

intlength();

MyStringoperator+(MyString&str);

booloperator=(MyString&str);

booloperator>(MyString&str);

booloperator<(MyString&str);

booloperator==(MyString&str);

boolLwrString();

boolUprString();

friendostream&operator<<(ostream&s,MyString&str);

friendistream&operator>>(istream&s,MyString&str);

private:

char*p;

char*getP();

};

MyString:

:

MyString(char*str){

p=str;

}

MyString:

:

MyString(constMyString&str){

p=str.p;

}

char*MyString:

:

getP(){

returnp;

}

intMyString:

:

length(){

intlen=0;

for(inti=0;p[i]!

='\0';i++){

len++;

}

returnlen;

}

MyStringMyString:

:

operator+(MyString&str){

char*p1,*p2,*p3;

intlen1=0,len2=0;

p1=p;

p2=str.getP();

len1=this->length();

len2=str.length();

char*resultChar=newchar[len1+len2+1];

p3=resultChar;

for(inti=0;i

resultChar[i]='\0';

}

while(*p1!

='\0'){

*p3=*p1;

p3++;

p1++;

}

while(*p2!

='\0'){

*p3=*p2;

p3++;

p2++;

}

returnMyString(resultChar);

}

boolMyString:

:

operator=(MyString&str){

char*p2,*p3;

intlen2=0;

p2=str.getP();

len2=str.length();

char*resultChar=newchar[len2+1];

for(inti=0;i

resultChar[i]='\0';

}

p3=resultChar;

while(*p2!

='\0'){

*p3=*p2;

p3++;

p2++;

}

p=resultChar;

returntrue;

}

boolMyString:

:

operator>(MyString&str){

char*p1,*p2;

intlen1=0,len2=0;

p1=p;

p2=str.getP();

len1=this->length();

len2=str.length();

while(*p1!

='\0'&&*p2!

='\0'){

if(*p1>*p2){

returntrue;

}elseif(*p1<*p2){

returnfalse;

}

p1++;

p2++;

}

if(*p1=='\0'){

returnfalse;

}else{

returntrue;

}

}

boolMyString:

:

operator<(MyString&str){

char*p1,*p2;

intlen1=0,len2=0;

p1=p;

p2=str.getP();

len1=this->length();

len2=str.length();

while(*p1!

='\0'&&*p2!

='\0'){

if(*p1>*p2){

returnfalse;

}elseif(*p1<*p2){

returntrue;

}

p1++;

p2++;

}

if(*p2=='\0'){

returnfalse;

}else{

returntrue;

}

}

boolMyString:

:

operator==(MyString&str){

intlen1=0,len2=0;

char*p1,*p2;

len1=this->length();

len2=str.length();

p1=p;

p2=str.getP();

if(len1==len2){

while(*p1!

='\0'){

if(*p1!

=*p2){

returnfalse;

}

p1++;

p2++;

}

returntrue;

}else{

returnfalse;

}

}

boolMyString:

:

LwrString(){//大转小

intlen=0;

len=this->length();

char*resultChar=newchar[len+1];

resultChar[len]='\0';

for(inti=0;i

if(p[i]<65||p[i]>90){

returnfalse;

}

resultChar[i]=p[i];

}

for(inti=0;i

resultChar[i]=resultChar[i]+32;

}

p=resultChar;

returntrue;

}

boolMyString:

:

UprString(){//小转大

intlen=0;

len=this->length();

char*resultChar=newchar[len+1];

resultChar[len]='\0';

for(inti=0;i

if(p[i]<97||p[i]>122){

returnfalse;

}

resultChar[i]=p[i];

}

for(inti=0;i

resultChar[i]=resultChar[i]-32;

}

p=resultChar;

returntrue;

}

ostream&operator<<(ostream&s,MyString&str){

s<

returns;

}

istream&operator>>(istream&s,MyString&str){

structmyString{

charstr1;

myString*next;

};

intcount1=0,len=0;

charstr2;

myString*head=NULL,*myString1=NULL,*myString2=NULL;

cout<<"请输入字符串,以0结束:

"<

cin>>str2;

while(str2!

='0'){

myString1=newmyString;

myString1->str1=str2;

myString1->next=NULL;

if(count1==0){

head=myString1;

count1=1;

}else{

myString2->next=myString1;

}

myString2=myString1;

len++;

cin>>str2;

}

char*resultChar=newchar[len+1];

resultChar[len]='\0';

myString2=head;

inti=0;

while(myString2!

=NULL){

resultChar[i]=myString2->str1;

myString2=myString2->next;

i++;

}

str.p=resultChar;

returns;

}

intmain(){

MyStringMyString1("ZOO"),MyString2(MyString1),MyString3;

cout<<"MyString1="<

cout<<"inputMyString3"<

cin>>MyString3;

cout<<"MyString3="<

cout<<"MyString3.length="<<(MyString3.length())<

cout<<"MyString3=MyString1resultis:

"<<(MyString3=MyString1)<

cout<<"MyString3="<

MyStringMyString4=MyString1+MyString3;

cout<<"MyString1+MyString3="<

cout<<"inputMyString3"<

cin>>MyString3;

cout<<"MyString1>MyString3resultis:

"<<(MyString1>MyString3)<

cout<<"MyString1

"<<(MyString1

cout<<"MyString1==MyString2resultis:

"<<(MyString1==MyString2)<

cout<<"MyString3.UprString()resultis:

"<<(MyString3.UprString())<

cout<<"MyString3="<

cout<<"MyString1.LwrString()resultis:

"<<(MyString1.LwrString())<

cout<<"MyString1="<

}

 

感谢下载!

 

欢迎您的下载,资料仅供参考

 

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

当前位置:首页 > 高等教育 > 其它

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

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