C++课程设计实验报告---字符串操作 本文关键词:字符串,课程设计,实验,操作,报告
C++课程设计实验报告---字符串操作 本文简介:南京理工大学C++课程设计实验报告姓名方圆学号0511590127班级05115901任课教师肖亮时间2006-9-21教师指定题目3—7:字符串操作评定难易级别A实验报告成绩.实验内容:字符串操作1.1程序功能介绍通过多种成员函数的定义和运算符的重载,实现字符串的各种直接操作,如:去掉串首串尾与子
C++课程设计实验报告---字符串操作 本文内容:
南京理工大学
C++课程设计实验报告
姓名
方圆
学号
0511590127
班级
05115901
任课教师
肖亮
时间
2006-9-21
教师指定题目
3—7:字符串操作
评定难易级别
A
实验报告成绩
.实验内容:
字符串操作
1.1
程序功能介绍
通过多种成员函数的定义和运算符的重载,实现字符串的各种直接操作,如:去掉串首
串尾与子串相同的子符,子串在主串的定位,用新子串更换主串中的指定子串,比较字符串的大小,字符串连接等,所有功能已经经过验证.
1.2
程序设计要求
(1)
将主函数main()中的输出语句printf()改为VC++中的输出语句。
(2)
程序中对字符串的处理函数均使用了字符数组sAns,它占用了大量存储空间,试使用动态分配存储空间的方法改写所有的函数,使之避免使用预先定义的长度很大的数组;并增加类的析构函数,删除动态分配的存储空间.
(3)
新增运算符重载函数,重载-,-=运算符,实现字符串的删除操作,并根据返回值判断操作是否成功.
(4)
新增成员函数void
DelRepeat(),实现在原字符串中删除相邻的重复字符的功能。
(5)
新增成员函数int
AddStart(FString
str,int
start),实现将字串str插入到原字符串中从第start字符开始位置上,操作正确返回1.
(6)
改写main函数的结构,界面为菜单的形式,根据菜单选项来验证类中所定义的各种成员函数及操作符重载函数的正确性。
2.
源程序结构流程框图与说明(含新增子函数的结构框图)
字符串操作流程图
菜单显示项目选择
循环
字符串加法
字符串减法
字符串比较
字符串具体操作
删除字符串首部相同字符
删除字符串尾部相同字符
删除字符串所有重复字符
字符串的插入操作
字符串的替换操作
字符串的倒置替换操作
开始
选择判断
退出
退出
1
3
2
2
5
4
5
1
3
4
6
7
选择
错误输入重选
3.
基本数据结构
class
FString
{
//
字符串类定义
private:
char*sString;
int
nLength;
//新增成员数据,是字符串对象的长度//String
data
must
be
first
(to
look
like
string)
public:
//Constructor
FString();
//缺省构造
FString(charstr){nLength=strlen(str);str=new
char[nLength+1];strcpy(sString,str);};
//新增构造函数,用字符串常量初始话字符串对象
FString(FString
//新增拷贝的构造函数,用类的对象初始化
~FString(){if(sString)delete[]sString;};
//新增析构函数,释放字符串对象所占用的空间
void
DelRepeat();
//新增成员函数,删除原字符串中相邻的重复字符
int
AddStart(FString
str,int
start);
//*新增成员函数,将字符串str插入到原字符串中从第start字符串开始位置上,操作正确返回1*/
inline
FString
operator-(const
charsAppend);
//新增函数,重载减法运算符
inline
FString
operator-(const
FString
sAppend);
//新增函数,重载减法运算符
inline
FString
operator-=(char*
val);
//新增函数,重载减法运算符
inline
FString
operator-=(FString
val);
//新增函数,重载减法运算符
FString
Mid(const
int
nStart,const
int
nLength);
//从字串sString中第nStart个字符开始取出nLength个字符
FString
Left(const
int
nLength);
//从字串sString左边取出nLength个字符
FString
Right(const
int
nLength);
//从字串
sString
右边取出
nLength
个字符
int
InStr(const
int
nStart,const
charsSearch,const
bool
bCaseSensitive=true);
int
InStrRev(const
int
nStart,const
charsSearch,const
bool
bCaseSensitive=true);
FString
RTrim(const
char
sChar=
);
FString
LTrim(const
char
sChar=
);
FString
Trim(const
char
sChar=
);
FString
Replace(const
charsSearch,const
charsReplace);
FString
Format(const
charsFormat,.);
//参数可变的函数
int
Length();
//Various
Operators
inline
operator
char*();
//转换函数
inline
FString
operator+(const
charsAppend);
//新增函数,重载加法运算符
inline
FString
operator+(const
FString
sAppend);
//新增函数,重载加法运算符
inline
char
operator[](const
int
nIndex);
//数组下标运算符重载
inline
FString
operator+=(char*
val);
//新增函数,重载加法运算符
inline
FString
operator+=(FString
val);
//新增函数,重载加法运算符
//Comparison
Operators
inline
int
operator(const
charval);
inline
int
operator>=(const
charval);
inline
int
operator!=(const
charval);
inline
int
operator==(const
charval);
inline
int
operator(const
FString
val);
inline
int
operator>=(const
FString
val);
inline
int
operator!=(const
FString
val);
inline
int
operator==(const
FString
val);
//Assignment
Operators
FString
operator=(const
charval);
FString
operator=(const
FString
val);
};
4.
程序运行结果界面
图1、初始界面
图2、字符串加法
图3
、字符串减法
图4
、字符串比较大小
图5、对字符串的具体操作
图6、删除字符串首部相同的字符
图7、字符串的插入操作
图8、字符串的替换操作
图9、字符串的倒置替换操作
5.
课程设计遇到的技术问题与解决思路
问题1:
在菜单选择时,若输入字符则会出现死循环。
解决办法:
将定义为整型输入变量改为定义成字符型变量。例:int
Option1
=’0’,Option2
=’0’;改为char
Option1
=’0’,Option2
=’0’。
问题2:主函数main()的输出语句如何修改为c++中的输出语句?
解决办法:C语言中的输出语句:printf(),头文件,改为c++中的输出语句时,要将头文件改成,应用时注意符号的正确修改。