1、字符串类的设计与实现样本 C+ 上机实验报告 上机实验名称: 类与对象 实验题目: 字符串类的设计与实现 班级: 学号: 姓名: *一实验目的: 1.掌握C+类的概念和基本组成, 学会设计类, 掌握类的使用方法。2.了解类的各成员在类中的封装特性。3.熟悉各种成员函数包括构造、 析构及内联等函数的定义与使用。二字符串UML图 String-*m_data : char+String (*str : const char = NULL) :String + String() : String+String(&other :const String ) :String+length(*str :
2、char) :int+& operator =( &other : const String) : String+ print() : void+comparestr(*str1 :const char ,*str2 : const char) : int +stringlianjie(*str1 : char,*str2 : char) : void三调试过程1.实验前先查阅相关书籍, 了解学习关于字符串的内容。理解本次实验目的, 与同组的成员交流。2.实验时, 增加了一些对两个字符串的处理, 处理字符串的比较时, 对比较的方法有不会的, 向老师及同组的同学请教, 使用比较ASCII码比较。
3、3.实验后, 进一步学习UML图。四测试结果1.输入一个字符串2.输出对这个字符串的操作3.输入两个字符串4.输出对这两个字符串的处理五程序代码: #include#include #include#includeusing namespace std;class Stringpublic: String(const char *str = NULL); String(const String &other); String(); int length(char *str); String & operator =(const String &other); void print(); int
4、 comparestr(const char *str1 ,const char *str2); void stringlianjie(char *str1,char *str2);private: char *m_data;int main() int n,a,c; char str100,str1100; char da410=,=,; while(1) coutOn a single string operations please press 1, the string comparison between please press 2, end please press 3n; if
5、(n=1) coutPlease enter a stringstr; String obj(str); obj.print(); String obj1(obj); obj1.print(); a=obj1.length(str); coutThe length of the string is:endl; coutaendl; String obj2; obj2.print(); obj2=obj1; obj2.print(); getchar(); else if(n=2) coutPlease enter the two stringsstrstr1; String obj; a=ob
6、j.length(str); coutThe first is the length of the string:aendl; a=obj.length(str1); coutThe second is the length of the string:aendl; coutCompare two stringsendl; c=parestr(str,str1); coutstr dac str1endl; coutTwo strings connectionendl; obj.stringlianjie(str,str1); coutstrendl; getchar(); else if(n
7、=3) exit(0); else coutnput error, please input again optionendl; coutendl; return 0;String:String(void) coutString的析构函数调用0) return 1; else if (stricmp(str1,str2)=0) return 2; else return 3;String:String(const char *str) if(str=NULL) m_data = new char1; *m_data = 0; else int length = strlen(str); m_d
8、ata = new charlength+1; strcpy(m_data, str); String:String(const String &other) cout拷贝构造函数endl; int length = strlen(other.m_data); m_data = new charlength+1; strcpy(m_data, other.m_data);String & String:operator =(const String &other) cout赋值函数endl; if(this = &other) return *this; delete m_data; int length = strlen(other.m_data); m_data = new charlength+1; strcpy(m_data, other.m_data); return *this;int String:length(char *str) int L=0; while(strL!=0) L+; return L;void String:print() coutm_dataendl;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1