字符串类设计文档格式.docx
- 文档编号:17800025
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:15
- 大小:56.53KB
字符串类设计文档格式.docx
《字符串类设计文档格式.docx》由会员分享,可在线阅读,更多相关《字符串类设计文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
一、实验目的
掌握类的概念及构造方法;
掌握构造函数的定义与使用;
掌握友元的定义与使用;
掌握运算符的重载定义与使用。
掌握继承和派生概念及应用,掌握多态方法及应用。
二、设备与环境
微型计算机、Windows系列操作系统、VisualC++6.0等编辑软件
三、实验内容
设计字符串类。
重载字符串+(连接)、=(复制)、判断(<
、>
、==),并编程实现求字符串长度、字符串转换函数(小写转换为大写及大写转换为小写)函数:
MyString();
MyString(char*ptr);
MyString(constMyString&
str);
MyStringoperator+(MyString&
MyStringoperator=(MyString&
MyStringoperator>
(MyString&
MyStringoperator<
MyStringoperator==(MyString&
friendostream&
operator<
<
(ostream&
s,MyString&
friendistream&
operator>
>
(istream&
MyStringLenString(MyString&
MyStringLwrString(MyString&
MyStringUprString(MyString&
四、设计过程(包括类的数据成员、成员函数、友元函数及主函数,写出主要代码)
classMyString{
public:
MyString(){p=NULL;
}
MyString(char*str);
MyString(constMyString&
intlength();
booloperator=(MyString&
booloperator>
booloperator<
booloperator==(MyString&
boolLwrString();
boolUprString();
friendistream&
private:
char*p;
char*getP();
};
intmain(){
MyStringMyString1("
ZOO"
),MyString2(MyString1),MyString3;
cout<
"
MyString1="
MyString1<
MyString2="
MyString2;
inputMyString3"
endl;
cin>
MyString3;
MyString3="
MyString3<
MyString3.length="
(MyString3.length())<
MyString3=MyString1resultis:
(MyString3=MyString1)<
MyStringMyString4=MyString1+MyString3;
MyString1+MyString3="
MyString4<
MyString1>
MyString3resultis:
(MyString1>
MyString3)<
(MyString1<
MyString1==MyString2resultis:
(MyString1==MyString2)<
MyString3.UprString()resultis:
(MyString3.UprString())<
MyString1.LwrString()resultis:
(MyString1.LwrString())<
五、实验结果(运行界面)及测试数据分析
MyString1("
)调用构造函数MyString:
:
MyString(char*str),MyString2(MyString1)调用复制构造函数MyString:
str),MyString3调用构造函数MyString()。
使用运算符重载函数
输入字符串对MyString3重新赋值为hello。
MyString3调用成员函数intlength()求得字符串MyString3的长度。
=把MyString1的值赋给MyString3。
+把字符串MyString1和MyString3进行连接。
和<
对字符串MyString1和MyString3进行判断。
使用运算符重载函数==对字符串MyString1和MyString2进行判断。
MyString3调用函数UprString()把字符串小写转换为大写。
MyString1调用函数LwrString()把字符串大写转换为小写。
六、实验总结
通过本学期的课程学习使我对C++程序设计有了初步的认识,也让我对面向对象有了一个更深刻的理解。
本系统虽然仍然存在着不足之处,但对于题目要求实现的功能均已实现。
源代码:
#include<
iostream>
usingnamespacestd;
MyString:
MyString(char*str){
p=str;
str){
p=str.p;
char*MyString:
getP(){
returnp;
intMyString:
length(){
intlen=0;
for(inti=0;
p[i]!
='
\0'
;
i++){
len++;
}
returnlen;
MyStringMyString:
operator+(MyString&
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;
i<
len1+len2+1;
resultChar[i]='
while(*p1!
){
*p3=*p1;
p3++;
p1++;
while(*p2!
*p3=*p2;
p2++;
returnMyString(resultChar);
boolMyString:
operator=(MyString&
char*p2,*p3;
intlen2=0;
char*resultChar=newchar[len2+1];
len2+1;
p=resultChar;
returntrue;
operator>
char*p1,*p2;
&
*p2!
if(*p1>
*p2){
}elseif(*p1<
returnfalse;
if(*p1=='
}else{
operator<
if(*p2=='
operator==(MyString&
if(len1==len2){
if(*p1!
=*p2){
LwrString(){//大转小
len=this->
char*resultChar=newchar[len+1];
resultChar[len]='
len;
if(p[i]<
65||p[i]>
90){
resultChar[i]=p[i];
resultChar[i]=resultChar[i]+32;
UprString(){//小转大
97||p[i]>
122){
resultChar[i]=resultChar[i]-32;
ostream&
s<
str.p<
returns;
istream&
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;
next=NULL;
if(count1==0){
head=myString1;
count1=1;
myString2->
next=myString1;
myString2=myString1;
myString2=head;
inti=0;
while(myString2!
=NULL){
resultChar[i]=myString2->
str1;
myString2=myString2->
next;
i++;
str.p=resultChar;
感谢下载!
欢迎您的下载,资料仅供参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 设计