1. 程式人生 > 其它 >串類的定義和實現與字元模式匹配演算法

串類的定義和實現與字元模式匹配演算法


String.h
1
//#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