《字符串类设计(共12页).doc》由会员分享,可在线阅读,更多相关《字符串类设计(共12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上华北科技学院计算机学院综合性实验实 验 报 告 课程名称 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( )
2、,B( ),C( ),D( ),F( )5、报告规范度: A( ),B( ),C( ),D( ),F( )实验成绩 计算机学院制C+程序设计课程综合性实验报告开课实验室:基础实验室三 2018年 6 月 5 日实验题目字符串类设计一、实验目的掌握类的概念及构造方法;掌握构造函数的定义与使用;掌握友元的定义与使用;掌握运算符的重载定义与使用。掌握继承和派生概念及应用,掌握多态方法及应用。二、设备与环境微型计算机、Windows 系列操作系统 、Visual C+6.0等编辑软件三、实验内容设计字符串类。重载字符串+(连接)、=(复制)、判断(、= =),并编程实现求字符串长度、字符串转换函数(小
3、写转换为大写及大写转换为小写)函数: MyString(); MyString(char *ptr);MyString(const MyString &str); MyString operator+(MyString &str);MyString operator=(MyString &str);MyString operator(MyString &str);MyString operator(MyString &str);MyString operator= (MyString &str); friend ostream& operator(istream& s, MyString &s
4、tr); MyString LenString(My String &str); MyString LwrString(My String &str);MyString UprString(My String &str);四、设计过程(包括类的数据成员、成员函数、友元函数及主函数,写出主要代码)class MyStringpublic : MyString()p=NULL; MyString(char *str); MyString(const MyString &str); int length(); MyString operator+(MyString &str); bool opera
5、tor=(MyString &str); bool operator(MyString &str); bool operator(MyString &str); bool operator= (MyString &str); bool LwrString(); bool UprString(); friend ostream& operator(istream& s, MyString &str);private: char *p; char *getP();int main()MyString MyString1(ZOO),MyString2(MyString1),MyString3;cou
6、tMyString1=MyString1MyString2=MyString2;coutinput MyString3MyString3;coutMyString3=MyString3endl;coutMyString3.length=(MyString3.length()endl;coutMyString3=MyString1 result is:(MyString3=MyString1)endl;coutMyString3=MyString3endl;MyString MyString4=MyString1+MyString3;coutMyString1+MyString3=MyStrin
7、g4endl;coutinput MyString3MyString3;coutMyString3 result is:MyString3)endl;coutMyString1MyString3 result is:(MyString1MyString3)endl;coutMyString1=MyString2 result is:(MyString1=MyString2)endl;coutMyString3.UprString() result is:(MyString3.UprString()endl;coutMyString3=MyString3endl;coutMyString1.Lw
8、rString() result is:(MyString1.LwrString()endl;coutMyString1=MyString1输入字符串对MyString3重新赋值为hello。MyString3调用成员函数int length()求得字符串MyString3的长度。使用运算符重载函数=把MyString1的值赋给MyString3。使用运算符重载函数+把字符串MyString1和MyString3进行连接。使用运算符重载函数和对字符串MyString1和 MyString3进行判断。使用运算符重载函数=对字符串MyString1和 MyString2进行判断。MyString3
9、调用函数UprString()把字符串小写转换为大写。MyString1调用函数LwrString()把字符串大写转换为小写。六、实验总结 通过本学期的课程学习使我对C+程序设计有了初步的认识,也让我对面向对象有了一个更深刻的理解。本系统虽然仍然存在着不足之处,但对于题目要求实现的功能均已实现。 源代码:#includeusing namespace std;class MyStringpublic : MyString()p=NULL; MyString(char *str); MyString(const MyString &str); int length(); MyString ope
10、rator+(MyString &str); bool operator=(MyString &str); bool operator(MyString &str); bool operator(MyString &str); bool operator= (MyString &str); bool LwrString(); bool UprString(); friend ostream& operator(istream& s, MyString &str);private: char *p; char *getP();MyString:MyString(char *str) p=str;
11、MyString:MyString(const MyString &str) p=str.p;char *MyString:getP() return p;int MyString:length() int len=0; for(int i=0;pi!=0;i+) len+; return len;MyString MyString:operator+(MyString &str) char *p1,*p2,*p3; int len1=0,len2=0; p1=p; p2=str.getP(); len1=this-length(); len2=str.length(); char *resu
12、ltChar=new charlen1+len2+1; p3=resultChar; for(int i=0;ilen1+len2+1;i+) resultChari=0; while(*p1!=0) *p3=*p1; p3+; p1+; while(*p2!=0) *p3=*p2; p3+; p2+; return MyString(resultChar);bool MyString:operator=(MyString &str) char *p2,*p3; int len2=0; p2=str.getP(); len2=str.length(); char *resultChar=new
13、 charlen2+1; for(int i=0;i(MyString &str) char *p1,*p2; int len1=0,len2=0; p1=p; p2=str.getP(); len1=this-length(); len2=str.length(); while(*p1!=0&*p2!=0) if(*p1*p2) return true; else if(*p1*p2) return false; p1+; p2+; if(*p1=0) return false; else return true; bool MyString:operatorlength(); len2=s
14、tr.length(); while(*p1!=0&*p2!=0) if(*p1*p2) return false; else if(*p1length(); len2=str.length(); p1=p; p2=str.getP(); if(len1=len2) while(*p1!=0) if(*p1!=*p2) return false; p1+; p2+; return true; else return false; bool MyString:LwrString()/大转小 int len=0; len=this-length(); char *resultChar=new ch
15、arlen+1; resultCharlen=0; for(int i=0;ilen;i+) if(pi90) return false; resultChari=pi; for(int i=0;ilength(); char *resultChar=new charlen+1; resultCharlen=0; for(int i=0;ilen;i+) if(pi122) return false; resultChari=pi; for(int i=0;ilen;i+) resultChari=resultChari-32; p=resultChar; return true;ostrea
16、m& operator(ostream& s, MyString &str) sstr.p(istream& s, MyString &str) struct myString char str1; myString *next; ; int count1=0,len=0; char str2; myString *head=NULL,*myString1=NULL,*myString2=NULL; cout请输入字符串,以0结束:str2; while(str2!=0) myString1=new myString; myString1-str1=str2; myString1-next=N
17、ULL; if(count1=0) head=myString1; count1=1; else myString2-next=myString1; myString2=myString1; len+; cinstr2; char *resultChar=new charlen+1; resultCharlen=0; myString2=head; int i=0; while(myString2!=NULL) resultChari=myString2-str1; myString2=myString2-next; i+; str.p=resultChar; return s;int mai
18、n()MyString MyString1(ZOO),MyString2(MyString1),MyString3;coutMyString1=MyString1MyString2=MyString2;coutinput MyString3MyString3;coutMyString3=MyString3endl;coutMyString3.length=(MyString3.length()endl;coutMyString3=MyString1 result is:(MyString3=MyString1)endl;coutMyString3=MyString3endl;MyString
19、MyString4=MyString1+MyString3;coutMyString1+MyString3=MyString4endl;coutinput MyString3MyString3;coutMyString3 result is:MyString3)endl;coutMyString1MyString3 result is:(MyString1MyString3)endl;coutMyString1=MyString2 result is:(MyString1=MyString2)endl;coutMyString3.UprString() result is:(MyString3.UprString()endl;coutMyString3=MyString3endl;coutMyString1.LwrString() result is:(MyString1.LwrString()endl;coutMyString1=MyString1endl;专心-专注-专业