// 求子串。用 sub 返回串 S 中的第 pos 个字符起长度为len的子串
bool SubString(SString &sub, SString S,int pos,int len){if((pos + len -1)> S.length)// 子串范围越界{return false;}for(int i = pos; i < pos + len; pos++){
sub.ch[i - pos +1]= S.ch[i];}
sub.length = len;return true;}
比较操作
// 比较串 S 和串 T 的大小;若 S > T,返回值大于0;若 S < T,返回值小于0;若 S = T,返回值等于0
bool StrCompare(SString S, SString T){for(int i =1; i <= S.length && i <= T.length; i++){if(S.ch[i]!= T.ch[i]){return S.ch[i]- T.ch[i];}}return S.length - T.length;// 扫描过的所有字符相同则长度长的串更大}
定位操作
// 定位。若主串 S 中存在与串 T 值相同相同的子串,则返回他在主串 S 中第一次出现的位置;否则函数值为0
bool Index(SString S, SString T){int i =1, n =StrLength(S), m =StrLength(T);
SString Sub;// 暂存子串while(i <(n-m+1)){SubString(sub, S, i, m);if(StrCompare(S, T)!=0){++i;}else{return i;// 返回子串在主串中的位置}}return0;// S中不存在和T相等的子串}