《字符串操作课程设计报告(共6页).doc》由会员分享,可在线阅读,更多相关《字符串操作课程设计报告(共6页).doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 南京理工大学VC课程设计报告课 程:VC+课程设计系 别:计算机科学与技术大类班 级:学 号:9姓 名:韩飞选题1名称:字符串操作选题1难易级别:A级选题2名称:选题2难易级别:自报成绩:起止时间:指导教师:严悍2013年09月目 录1 课题目标通过多种成员函数的定义和运算符的重载,实现字符串的各种直接操作,如:去掉串首 串尾与子串相同的子符,子串在主串的定位,用新子串更换主串中的指定子串,比较字符串的大小,字符串连接等,所有功能已经经过验证.2 程序具体实现原理2.1 总体方案设计一个类,在类中包含对字符串操作的成员函数,然后在主函数中用类的对象来调用成员函数,实
2、现字符串操作的功能。2.1.1开发平台VC+ 6.0 ;2.1.2基本原理字符串操作流程图菜单显示项目选择循环字符串加法字符串减法字符串比较字符串具体操作删除字符串首部相同字符删除字符串尾部相同字符删除字符串所有重复字符字符串的插入操作字符串的替换操作字符串的倒置替换操作开始选择判断退出退出132254513467选择 错误输入重选2.2 程序各个功能说明2.2.1 程序结构class Fstringprivate:char * str;int nlength;public:void copy(const char* s);Fstring()str=NULL;Fstring(char * s)
3、;Fstring(bool b);Fstring(int i);Fstring(double d);Fstring(const Fstring& f)this-copy(f.str);this-nlength=f.nlength;Fstring();int getLength();char* getstr()return this-str;Fstring& operator=(const char* s);Fstring& operator=(const Fstring& f); void show()coutstr); Fstring operator+(const char * sAppe
4、nd);/重载加法运算符 Fstring operator+(const Fstring sAppend);/重载加法运算符 Fstring& operator+=(const char * sAppend);/重载加法运算符Fstring& operator+=(const Fstring sAppend);/重载加法运算符Fstring operator-(const char* sSub);/重载减法运算符 Fstring operator-(const Fstring sSub);/重载减法运算符 Fstring& operator-=(const char* sSub);/重载减法运
5、算符 Fstring& operator-=(const Fstring sSub);/重载减法运算符 int operator(const char * val);/重载关系运算符 int operator(const Fstring val);/重载关系运算符int operator=(const char * val);/重载关系=运算符 int operator=(const Fstring val);/重载关系(const char * val);/重载关系运算符 int operator(const Fstring val);/重载关系运算符 int operator=(const
6、 char * val);/重载关系=运算符 int operator=(const Fstring val);/重载关系=运算符 int operator!=(const char * val);/重载关系!=运算符 int operator!=(const Fstring val);/重载关系!=运算符 int operator=(const char * val);/重载关系=运算符 int operator=(const Fstring val);/重载关系=运算符Fstring Left(const int nlength);/从字符串左边取出nlength个字符Fstring Ri
7、ght(const int nlength);/从字符串右边取出nlength个字符int Instr(const int nStart,const char* sSearch,const bool bCaseSensitive=true);/*从第nStart个字符处开始,在字串对象寻找字串sSearch,参数bCaseSensitive表示忽略大小写*/int InstrRev(const int nStart,const char* sSearch,const bool bCaseSensitive=true);/寻找字串的倒置串在主串的位置Fstring& RTrim();/串尾整理,
8、即去掉串尾相同的字符Fstring& LTrim();/串首整理,即去掉串首相同的字符 Fstring& deleteall();/删除所有重复字符Fstring Replace(const char * sSearch,const char* replace);/用字串replace替换主串中所有字串sSearchFstring ReplacrRev(const char* sSearch,const char* replace);/用字符串replace替换主串中所有字串sSearch的倒置串Fstring Format(const char* sFormat,.);/按指定格式输出字符串
9、int AddStart(Fstring f,int start);/将字符串str插入到原字符串中从第start字符开始位置上,操作正确返回1;首先为Fstring类添加了两个成员变量:char*型和int型,char*型用来指向字符串,int型变量用来储存字符串长度。然后为Fstring添加成员函数,来完成对字符串的具体操作。2.2.2 课程设计要求的实现(1) 将主函数main()中的输出语句printf()改为VC+中的输出语句。(2) 程序中对字符串的处理函数均使用了字符数组sAns,它占用了大量存储空间,试使用动态分配存储空间的方法改写所有的函数,使之避免使用预先定义的长度很大的数
10、组;并增加类的析构函数,删除动态分配的存储空间.(3) 新增运算符重载函数,重载-,-=运算符,实现字符串的删除操作,并根据返回值判断操作是否成功.(4) 新增成员函数void DelRepeat(),实现在原字符串中删除相邻的重复字符的功能。(5) 新增成员函数int AddStart(FString str,int start),实现将字串str插入到原字符串中从第start字符开始位置上,操作正确返回1.(6) 改写main函数的结构,界面为菜单的形式,根据菜单选项来验证类中所定义的各种成员函数及操作符重载函数的正确性。3 调试报告以下面的表格形式记录程序调试和测试过程。日期遇到的问题解
11、决方法2013,9,2菜单选择时输入字符等非数字时,会出现死循环。char str130;cin.getline(str1,30);nChoice1=atoi(str1);/使用atoi函数2013,9,4unexpected end of file found少了一个大括号,找到缺少的大括号的位置加上即可4 总结刚接触这道题时觉得挺简单的,但越往后写越觉得难,可能只是原理简单吧。看课本上的一些关键代码,发现有很多的错误,因此我就决定在参考书上代码的基础上自己动手写。在分析完这个题目需要实现的功能后,开始确定类中必需的成员函数。在完成类的实现后,写完主函数后,编译执行时才出现很多很多的问题。看到这些问题当时就觉得很郁闷,然后根据错误修改时才发现:大多数的问题都是因为我的不认真,犯了很多很多的低级错误。耐心地改完错误后,编译执行成功后,那种真实的兴奋感我觉得我这辈子都忘不了。我也觉得这可能就是程序员能够坚持每天对着电脑,编写着枯燥的代码的动力吧。当编译执行成功时,那种喜悦感足以让我以及很多程序员决定终身投入这项工作中。这次的课程设计让我明白了:做一个合格的程序员一定要认真,因为一个很小很小的错误都可能造成巨大的损失。还有就是一定要有耐心,因为我们编写程序时不可避免的会犯错误,当犯错误时一定要有耐心的检查代码,找到问题的根本所在。专心-专注-专业
限制150内