字串就是用陣列儲存一連串用字元表示的資訊
操作和其他資料結構不同,字串的每個單位不是其他資料結構的節點,而是字元陣列的每位,所以演算法理解起來有一點難度。有些函式看起來還挺長的,不過慢慢理解之後會發現其實不難
由於並非必須,下列函式沒有檢測輸入資料是否正確符合規範沒有越界,需要輸入自行確定
typedef
char string[maxsize+1]
;
使用《大話資料結構》中的做法,string的第0位儲存字串長度,第1到第maxsize位儲存資料
string[maxsize-1]等同於*string,即typedef char *string,把char *叫做string
還沒輸入之前,字串為空,無法使用其他函式
輸入:輸入字串s的內容
逐個讀取字元,最後確定字串長度,賦給s[0]
void
input
(string s)
s[0]=i-1;
}
輸出:列印字串s
也是依次輸出。不能用cout,因為cout不能輸出空格,所以注意要包括stdio.h
void
output
(string s)
}
複製:把字串s複製到字串t中
從第零位依次放入即可
void
copy
(string s,string t)
}
比較:比較字串s和字串t,返回s和t的差值(先後順序)
按位比較,直到第乙個不一樣的字元出現;如果到某串結尾都相同,則差值是長度相減
int
compare
(string s,string t)
}return s[0]
-t[0];
//如果前min個都一樣,那值的差別就在字元數上
}
連線:把t接在s後面,多了就截斷t,只放一部分
void
connect
(string s,string t)
s[0]=
(s[0
]+t[0]
<=50)
?(s[0]
+t[0])
:50;//作用同上,替代if/else
}
賦串:將s中第position個字元起length長的子串賦給t
void
getstring
(string s,string t,
int position,
int length)
t[0]=length;
}
查詢:從s中第position個字元起找是否有sub子串,返回它出現的第乙個位置,如果沒有,返回0
有兩種思路:
①逐位比較
int
index1
(string s,string sub,
int position)
else}if
(j>sub[0]
)return i-sub[0]
;else
return0;
}
②呼叫compare
int
index2
(string s,string sub,
int position)
else
}return0;
}
插入:在s中第position個字元前插入sub
根據插入後總長可以分為兩種情況
void
insert
(string s,string t,
int position)
for(i=position;i<=position+t[0]
-1;i++
)//插入
s[0]
=s[0
]+t[0]
;//別忘了改
}else
for(i=position;i<=position+t[0]
-1;i++
)//從position到position+t[0]-1即插入t的那些位
s[0]
=maxsize;
//別忘了改
}}
刪除:刪除s中position位後面length長的子串
就是簡單的前移
void
delete
(string s,
int position,
int length)
s[0]=s[0]
-length;
}
替換:將s中的old串替換成new串
用index搜尋位置,用delete刪除old,用insert插入new
void
replace
(string s,string old,string new)
}while
(i);
}
字串常用函式
1.查詢字串位置的函式 不適合用於漢子查詢 strpos str,find,int 查詢find在str中第一次出現的位置。對大小寫敏感 從int位置開始往後查詢。如果沒有找到返回flase strrpos str,find,int 查詢find在str中最後一次出現的位置。對大小敏感 從int位置...
字串常用函式
提取子串和字串連線 題取子串的函式是 substr 形式如下 s.substr 返回s的全部內容 s.substr 11 從索引11往後的子串 s.substr 5,6 從索引5開始6個字元 把兩個字串結合起來的函式是 輸入輸出操作 1 從輸入流讀取乙個string。2 把乙個string寫入輸出流...
字串常用函式
函式 方法 描述示例 find 檢測字串是否包含指定字元,如果是返回開始的索引值,否則返回 1 str1 hello world print str1.find lo index 檢測字串是否包含指定字元,如果是返回開始的索引值,否則提示錯誤 str1 hello world print str1....