字符串( String) 字符串是n(≥0)个字符的有限序列, 记作S:“c;c2cs 99 ●●● 其中,S是串名字 23°° cn”是申值 c1是串中字符 n是串的长度。 例如,S=“ Tsinghua University
字符串 (String) 字符串是 n ( 0 ) 个字符的有限序列, 记作 S : “c1 c2 c3…cn ” 其中,S 是串名字 “ c1 c2 c3…cn ”是串值 ci 是串中字符 n 是串的长度。 例如, S = “Tsinghua University
字符串抽象数据类型和类定义 const int maxLen= 128: class String i int curlen /的当前长度 char *cha /的存储数组 public: String( const String &e ob ) String( const char x init ) String o; aString delete l ch; j
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; 3 /当前串*this的实际长度 String &operator((int pos, int len ) /取thi从p开始len个字符组成的子串 int operator =- const String &ob) R return strcmp(ch, ob. ch)==0;) /判当前串*this与对象串ob是否相等 int operator! = const String &ob const i return strcmp(ch, ob.ch)!=0;) /判当前串*thi与对象串ob是否不等
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 !O const i return curLen==0; j /判当前串*thi是否空串 String &operator=(String &ob); /将串ob赋给当前串*this String &operator +=(String &ob); /将串ob连接到当前串*th之后 char &operator [(int i ); /取当前串this的第i个字符 int Find( String& pat )const
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; }
字符串部分操作的实现 String String( const String ob)i /复制构造函数:从已有串ob复制 ch= new charmaxLen+1};/建串数组 if (ch== nULL) cerr<<“ 存储分配错!m”; eXI curlen= ob. curLen;/复制串长度 strcpy(ch,obch);/复制串值
String :: String ( const String& ob ) { //复制构造函数:从已有串ob复制 ch = new char[maxLen+1]; //创建串数组 if ( ch == NULL ) { cerr << “存储分配错! \n”; exit(1); } curLen = ob.curLen; //复制串长度 strcpy ( ch, ob.ch ); //复制串值 } 字符串部分操作的实现