C++课程设计实验报告·模板.doc
文本预览下载声明
读万卷书 行万里路
PAGE
紫金学院Visual C++课程设计
南京理工大学紫金学院VC++课程设计报告
课 程:
VC++课程设计
系 别:
计算机系
班 级:
计算机科学与技术
学 号:
110601102
姓 名:
顾佳燕
选题名称:
字符串操作
选题难易别:
A级
起止时间:
2012.11.20~2012.12.22
指导教师:
朱 俊
2012年 12 月
程序功能介绍:
通过多种成员函数的定义和运算符的重载,实现字符串的各种直接操作,如:去掉串首、串尾与子串相同的字符,子串在主串中的定位,用新子串更换主串中的指定子串,比较字符串的大小,字符串连接等,所有功能已经通过验证。
课程设计要求
将主程序main()中的输出语句printf()改为VC++里的输出语句。
程序中对字符串的处理函数均使用了字符数组sAns,它占用了大量存储空间,试使用动态分配存储空间的方法改写所有的函数,是之避免使用预先定义的长度很大的数组;并增加类的析构函数,删除动态分配存储空间。
新增运算符重载函数,重载—,—=运算符,实现字符串的删除操作,并根据返回值判断操作是否成功。
新增成员函数void DelRepeat(),实现在原字符串中删除相邻的重复字符的功能。
新增成员函数 int AddStart(FString str ,int start),实现将字串str插入到原字符串中从第start字符开始位置上,操作正返回1。
改写main函数的结构,界面为菜单形式,根据菜单选项来验证类中所定义的各种成员函数及操作符重载函数的正确性。
对课程题目的分析与注释
字符串或串(String)是由零个或多个字符组成的有限序列。一般记为 s=a1a2···an(n=0)。它是HYPERLINK /view/552871.htm编程语言中表示文本的HYPERLINK /view/675645.htm数据类型。
一个简单的字符串操作是“连接”:也就是说先写一个字符串S,随后在后面再写一个T得到ST这样一个过程。 其它的常见操作包括在一个长字符串中搜索一个子串,排列一组字符串以及分析一个字符串。因为存在如此多的字符串应用方式,所以相应地有许多权衡了不同应用的相关算法。 高级的字符串算法通常使用包括后向树和有限状态机在内的复杂机制和HYPERLINK /view/9900.htm数据结构。
程序设计和说明(说明算法思想、设计思路,给出重要的、关键的代码)
类的数据结构
原程序定义了大量的成员函数和运算符重载函数,但这些函数都是在固定空间的字符数组上网前提下实现的,课程设计要求所有的函数要利用动态分配存储空间的方法存储字符串对象,所以基本上类中所有函数都要重新写,类中的数据成员增加一项字符串的长度int nLength,这样,动态分配存储空间的操作就可以简单一些char *p=char[nLength+1]。
#include iostream.h
#include stdio.h
#include string.h
#include windows.h
#include stdarg.h //定义参数个数可变的函数时用到
#define MAX_FSTRING_LENGTH 250000 //用作数组长度
class FString { // 字符 串类定义
private:
char *sString;
int nlength;
public:
FString(); //缺省构造函数
FString(char *str);//新增构造函数,用字符串常量初始化字符串对象
FString(FString );//新增拷贝构造函数,用类的对象初始化
~FString(){} //新增析构函数,释放字符串对象所占用的空间
void DelRepeat();
FString AddStart(FString str,int start);
inline FString operator-(const char *sAppend);//新增函数,重载减法运算符
inline FString operator-(const FString sAppend); //新增函数,重载减法运算符
inline FString operator-=(char *val); //新增函数,重载减法运算符
inline FString operator-=(FString val); //新增函数,重载减法运算符
main函数结构
main函数采用菜单选项的形式来实现类中的各个功能,显示菜单如下:
字符串加法
void F
显示全部