- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
字符串String
字符串 (String) 字符串是 n ( ? 0 ) 个字符的有限序列, 记作 S = “c1c2c3…cn” 其中,S 是串名字 “c1c2c3…cn”是串值 ci 是串中字符 n 是串的长度。 例如, S = “Tsinghua University” 字符串抽象数据类型和类定义 提取子串的算法示例 串的模式匹配 定义 在串中寻找子串(第一个字符)在串中的位置 词汇 在模式匹配中,子串称为模式,串称为目标。 示例 目标 T : “Beijing” 模式 P : “jin” 匹配结果 = 4 * const int maxLen = 128; class String { int curLen; //串的当前长度 char *ch; //串的存储数组 public: String ( const String ob ); String ( const char * init ); String ( ); ~String ( ) { delete [ ] ch; } int Length ( ) const { return curLen; } //求当前串*this的实际长度 String operator ( ) ( int pos, int len ); //取*this从pos开始len个字符组成的子串 int operator == ( const String ob ) { return strcmp (ch, ob.ch) == 0; } //判当前串*this与对象串ob是否相等 int operator != ( const String ob ) const { return strcmp (ch, ob.ch) != 0; } //判当前串*this与对象串ob是否不等 int operator ! ( ) const { return curLen == 0; } //判当前串*this是否空串 String operator = (String ob); //将串ob赋给当前串*this String operator += (String ob); //将串ob连接到当前串*this之后 char operator [ ] ( int i ); //取当前串*this的第 i 个字符 int Find ( String pat ) const; } int Index(String S, String T, int pos){ if(pos0){ n=StrLength(S);m=StrLength(T);i=pos; while(i=n-m+1){ SubString(sub,S,i,m); if(StrCompare(sub,T)!=0) ++i; else return i; } } return 0; } String :: String ( const String ob ) { //复制构造函数:从已有串ob复制 ch = new char[maxLen+1]; //创建串数组 if ( ch == NULL ) { cont “存储分配错! ”endl; exit(1); } curLen = ob.curLen; //复制串长度 strcpy ( ch, ob.ch ); //复制串值 } 字符串部分操作的实现 String :: String ( const char *init ) { //复制构造函数: 从已有字符数组*init复制 ch = new char[maxLen+1]; //创建串数组 if ( ch == NULL ){ cout “存储分配错 !”endl; exit(1); } curLen = strlen ( init ); //复
文档评论(0)