分割字串分兩種,一類是以某個字元為key分割,一類是以某個串為key分割。
以串分割的
先找到key在原字串中的位置,這個演算法就多了,kmp
然後用strcnp,strcat來操作,舉個例子,也是引出本次討論的問題,
刪除:80三個字元。
char p = "";
char *result = strchr(&p[5],':');
int local = result-p;
int i = 0;
int j = i+3;
while(result[j])
result[i] = '\0';
cout<
此處沒有開闢新的空間,如果寫成函式也可直接返回p指標,改變了p指標指向的內容。因為問題的特殊性,招到第二個冒號的位置就可以招到:80的位置了。
第二類問題,以某個字元分割
有庫函式strtok()
char *strtok(char *s, const char *delim);
strtok()用來將字串分割成乙個個片段。引數s指向欲分割的字串,引數delim則為分割字串,當strtok()在引數s的字串中發現到引數delim的分割字元時則會將該字元改為\0 字元。在第一次呼叫時,strtok()必需給予引數s字串,往後的呼叫則將引數s設定成null。每次呼叫成功則返回被分割出片段的指標。
char sentence="this is a sentence with 7 tokens";
cout<<"the string to be tokenized is:\n"<
unix中有strseq()函式。
delphi之分割字串
因為喜歡用文本來記錄資料,比如帳號密碼等等,乙個遊戲帳戶一行 帳號1,密碼1,遊戲區11 帳號2,密碼2,遊戲區11 需要用到分割字串函式。delphi的classes有extractstrings函式,感覺用起來不好,後來網上找了個,如下 function splitstring pstring ...
字串操作 靠字串分割字串
字串分解函式。注意strtok比較複雜。要妥善運用!也可以不用strtok函式,但要實現字串靠字串分割比較困難!注意str指向的空間必須是可讀可寫的 如陣列或動態分配的空間 不能為字串常量的指標,因為strtok改變了其中的內容。include include 功能 將str中的字串按照elemon...
mysql分割字串 mysql分割字串
專案有通過一批id去過濾結果的需求,因為這個id是從其他平台拉下來的excel,為了避免加引號逗號的麻煩,在mysql儲存過程裡面拼接。在此做個記錄。很多地方用得上。1.通過某個字元,分割字串的函式。輸入分別為f string 待分割字串 f delimiter 分割字元 f order 取的字串的...