String.h //#pragma once 2 #include<iostream> 3 #include<string.h> 4 #include<cstring> 5 using namespace std; 6 7 class String { 8 protected: 9 //串的数据成员 10 char* sVal; //串值 11 size_t length;//长度 12 13 public: 14 //串的成员函数 15 String(); //构造函数 16 virtual ~String(); //析构函数 17 String(const String& s); //复制构造函数 18 String(const char* s); //转换构造函数 19 //String(LinkList<char>&s); //从线性表转换的构造函数 20 int GetLength() const; //求长度 21 bool IsEmpty() const; //判断串是否为空 22 String& operator = (const String& s); //赋值语句重载 23 const char* CStr() const; //将串转换为字符数组 24 char& operator[](int p) const; //重载下标运算符 25 }; 26 27 //串的相关函数定义P121 - P124 28 29 int BF_find(const String& ob, const String& pat); 30 31 32 33 34 35 36 37 String.cpp 38 //#pragma once 39 #include<iostream> 40 #include<string.h> 41 #include<cstring> 42 using namespace std; 43 44 class String { 45 protected: 46 //串的数据成员 47 char* sVal; //串值 48 size_t length;//长度 49 50 public: 51 //串的成员函数 52 String(); //构造函数 53 virtual ~String(); //析构函数 54 String(const String& s); //复制构造函数 55 String(const char* s); //转换构造函数 56 //String(LinkList<char>&s); //从线性表转换的构造函数 57 int GetLength() const; //求长度 58 bool IsEmpty() const; //判断串是否为空 59 String& operator = (const String& s); //赋值语句重载 60 const char* CStr() const; //将串转换为字符数组 61 char& operator[](int p) const; //重载下标运算符 62 }; 63 64 //串的相关函数定义P121 - P124 65 66 int BF_find(const String& ob, const String& pat); 67 68 69 70 Client.cpp(主程序) 71 #include "String.h" 72 73 74 75 void Test_BF() { //BF匹配算法的测试 76 String str1("hello world"); 77 String str2("llo"); 78 int e = BF_find(str1, str2); 79 if (e == - 1) { 80 cout << "匹配失败" << endl; 81 } 82 else { 83 cout << "匹配成功!目标字符串出现在第" << e + 1 << "个位置!" << endl; 84 } 85 } 86 87 88 89 int main() { 90 Test_BF(); 91 92 93 }//main