字串或串(string)是由數字、字母、下劃線組成的一串字元。一般記為 s=「a1a2···an」(n>=0)。它是程式語言中表示文字的資料型別。在程式設計中,字串(string)為符號或數值的乙個連續序列,如符號串(一串字元)或二進位制數字串(一串二進位制數字)。
通常以串的整體作為操作物件,如:在串中查詢某個子串、求取乙個子串、在串的某個位置上插入乙個子串以及刪除乙個子串等。兩個字串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的儲存方式是順序儲存方式和鏈結儲存方式。
對於字串來說使用順序儲存方式比使用鏈式儲存方式節約空間,且很容易實現,所有下面的**實現的是字串的順序存方式。注意:規定在串值後面加乙個不計入串長度的結束標記字元,比如「\0」來表示串值終結。如果不加「\0」,輸出時可能會出現亂碼!
//-----公用的常量和型別----------
#include
#include
#include
using
namespace
std;
#include
#include
//函式結果狀態**
#define true 1
#define false 0
#define ok 1
#define error 0
#define overflow -2
typedef
int status;
//字串的基本操作
//---------串的堆分配儲存表示----------
typedef
structstring;
//--------串基本操作的函式原型說明--------
//生成乙個其值等於chars的串
status strassign(string &t, char *chars)
if(!i)else
t.ch[t.length] = '\0';
}return ok;
}//strassign
//返回串內元素個數,串長度
int strlength(string s)//strlength
//字串比較,若s>t,則返回》0;若s=t,則返回=0;若sint strcompare(string s, string t)
//將串s清空
status clearstring(string &s)
s.length = 0;
return ok;
}//clearstring
//用t返回由s1和s2連線而成的新串
status concat(string &t, string s1, string s2)//concat
//初始條件:串s存在,1<=pos<=strlength(s) 且 0<=len<=strlength(s)-pos+1
//用sub返回串s的第pos個字元起長度為len的子串
status substring(string &sub, string s, int pos, int len)else
s.ch[s.length] = '\0';
return ok;
}return ok;
}//substing
//判空
status strempty(string s)//strempty
//串複製
status strcopy(string &t, string s)//strcopy
//若主串s中存在和串t相同的子串,則返回它在主串中的
//第pos個字元之後的第一次出現的位置,否則函式值為0
status index(string s, string t, int pos)//while
}//if
return
0;}//index
//初始條件:串s存在,1<=pos<=strlength(s)+1
//操作結果:在串s的第pos個字元之前插入串t
status strinsert(string &s, int pos, string t)
return ok;
}//strinsert
//初始條件:串s存在,1<=pos<=strlength(s)-len+1
//操作結果:從串s中刪除第pos個字元起長度為len的子串
status strdelete(string &s, int pos, int len)
return ok;
}//strinsert
//初始條件:串s,t,v存在,t是非空串
//操作結果:用v替換主串s中出現的所有與t相等的不重疊的子串
status replace(string &s, string t, string v)
}return ok;
}//replace
//銷毀串
status destroystring(string &s)//destroystring
//用來測試基本操作
#include "base.h"
#include "string.h"
int main();
char str2 = ;
strassign(s1, str1); //生成字串
strassign(s2, str2);
cout
<
/輸出字串
圖:字串操作測試結果
字串基本操作
include unsigned int strlenth char s 獲取字串長度 return lenth void strcopy char target,char source 字串拷貝 int strcompare char s,char t 字串比較,s t,則返回1 s t,則返回0...
字串基本操作
遞迴求字串長度 int recurlength char str 字串中最後乙個引數的長度 int lastwordlen char str,int len int lastwordlen char str return lastlen 字串記憶體的拷貝 實現memmove函式 char my me...
字串基本操作
判斷字串開頭結尾字元 string.startswith l 判斷字串是否以l開頭 string.endswith n 判斷字串是否以n結尾 返回字串中字元的位置 string.find x 找到這個字元返回下標,多個時返回第乙個 不存在的字元返回 1 string.index x 找到這個字元返回...