class String /字符串类 /它的存储结构和实现方法使用了C++标准 string(简称标准串), ∥/为了区别,类 String所派生创建的实例对象,简称“本串’,或实例串 //在程序首,要# include< string.h>和# include< iostream.h>及 //及# include< stdlib.h>,以及# include< assert.h //1.字符串的数据表示 /字符串S通常用顺序存放,用数组S[]存储,元素的类型为char /字符串为变长,使用变量size记录串的当前长度 /2.使用变量访问字符串 /字符串变量能参与运算,例如S1+S2表示两个字符串首尾拼接在一起 //用数组str存储字符串,在内部可以用str[i访问串的第i个字符, /3.字符串类的运算集:请参看下面的成员函数
北京大学信息学院 张铭编写 ©版权所有,转载或翻印必究 Page 11 back next 3.1.2 String抽象数据类型(续) class String //字符串 类 //它的存储结构和实现方法使用了C++标准string(简称标准串), //为了区别,类String所派生创建的实例对象,简称‘本串’,或‘实例串’ //在程序首,要#include <string.h>和#include <iostream.h>及 // 及 #include <stdlib.h>,以及#include <assert.h> { //1.字符串的数据表示: //字符串 S 通常用顺序存放,用数组S[]存储,元素的类型为char //字符串为变长,使用变量size记录串的当前长度 // 2.使用变量访问字符串: //字符串变量能参与运算,例如S1 + S2表示两个字符串首尾拼接在一起 //用数组str[]存储字符串,在内部可以用str[i]访问串的第i个字符, // 3.字符串类的运算集:请参看下面的成员函数
private char *kst //私有的指针变量,用于指向存储向量str[size+1] int size: //本串的当前实际长度 public String(char*s=’’);//创建一个空的字符串 String(char*s);∥/创建新字符串,并将标准字符串s拷贝为初值 String //销毁本串,从计算机存储空间删去本串 //下面是函数的定义,包括赋值函数=拼接函数+和比较函数<等 String& operator=(char*s);//赋值操作=,标准串s拷贝到本串 Stringi& operator=( String&s);//赋值操作=,串s复制到本串 String operator+(char*s);//拼接函数+,本串拼接标准串s String operator+( String&s);/拼接函数+,本串拼接串s friend String operator+ (char *s1, String& s) //友函数作为拼接函数+其返回值是一个实例串,等于标准串str拼接串s
北京大学信息学院 张铭编写 ©版权所有,转载或翻印必究 Page 12 back next private: char *str; //私有的指针变量,用于指向存储向量str[size+1] int size; //本串的当前实际长度 public: String(char *s = ''); //创建一个空的字符串 String(char *s); // 创建新字符串,并将标准字符串s拷贝为初值 ~String() // 销毁本串,从计算机存储空间删去本串 //下面是函数的定义,包括赋值函数 = 拼接函数 + 和比较函数 < 等 String& operator= (char *s);//赋值操作=,标准串s拷贝到本串 String& operator= (String& s);//赋值操作=,串s复制到本串 String operator+ (char *s);//拼接函数+,本串拼接标准串s String operator+ (String& s);//拼接函数+,本串拼接串s friend String operator+ (char *s1, String& s); //友函数作为拼接函数+ 其返回值是一个实例串,等于标准串str拼接串s
//关系'函数,用于比较相等、大、小,例如 int operator<(char*s);//比较大小,本串小于标准串s则返回非0 int operator<( String&s);//比较大小,本串小于串s则返回非0 friend int operator<(char*s1, String&s);//友函数用于比较, //,标准串s1小于串s,则返回非0 //输入输出ˆ函数>和<<以及读子串等,例如友函数 friend istream& operator>>(istream& istr, String& s) friend ostream& operator< (osteream& istr, String& s) //子串函数ˆ:插入子串、寻找子串、提取子串、删除子串等,例如 String substr( int index, int count);//它们的功能参见下文 //串与字符函数:按字符定位等,例如 int find( char c, int start);//在本串中寻找字符c,从下标 start开始找, //寻找到c后,返回字符c在本串的下标位置 //其他函数:求串长、判空串、清为空串、 int strlen0;//返回本串的当前串长 int IsEmpty();//判本串为空串? void clear0;//清本串为空串
北京大学信息学院 张铭编写 ©版权所有,转载或翻印必究 Page 13 back next //‘关系’函数,用于比较相等、大、小,例如 int operator< (char *s);//比较大小,本串小于标准串s则返回非0 int operator< (String& s);//比较大小,本串小于串s则返回非0 friend int operator< (char *s1, String& s); //友函数用于比较, // ,标准串s1小于串s,则返回非0 //‘输入输出’函数 >>和<< 以及 读子串等,例如友函数 friend istream& operator>> (isteream& istr,String& s); friend ostream& operator<< (osteream& istr,String& s); // ‘子串函数’:插入子串、寻找子串、提取子串、删除子串等,例如 String Substr(int index,int count); //它们的功能参见下文 //‘串与字符’函数:按字符定位等,例如 int Find(char c,int start);//在本串中寻找字符c,从下标start开始找, // 寻找到c后,返回字符c在本串的下标位置 //其他函数:求串长、判空串、清为空串、 int strlen(); //返回本串的当前串长 int IsEmpty(); //判本串为空串? void clear(); //清本串为空串 };
3.123赋值操作符、拼接操 作符和比较操作符 赋值操作符= 拼接操作符+ 比较操作符<<=> >=!=和== back ex 北京大学信息学院 张铭编写⊙版权所有,转载或翻印必究 Page 14
北京大学信息学院 张铭编写 ©版权所有,转载或翻印必究 Page 14 back next 3.1.2.3 赋值操作符、拼接操 作符和比较操作符 赋值操作符 = 拼接操作符+ 比较操作符 < <= > >= != 和 ==
3124输入输出操作符 <<和>> 输入操作符>> 输出操作符<< back 北京大学信息学院 张铭编写⊙版权所有,转载或翻印必究 Page 15
北京大学信息学院 张铭编写 ©版权所有,转载或翻印必究 Page 15 back next 3.1.2.4 输入输出操作符 << 和 >> 输入操作符>> 输出操作符<<