字串分割

2021-06-16 09:17:03 字數 1439 閱讀 9125

字串分割一種時常會遇到的問題:下面列舉幾個函式 ,可以方便程式設計:

1.strtok函式進行字串分割    ( 適合用於一次性分割 ,這個用得比較多)

原型: char *strtok(char *str, const char *delim);

功能:分解字串為一組字串。

引數說明:str為要分解的字串,delim為分隔符字串。

返回值:從str開頭開始的乙個個被分割的串。當沒有被分割的串時則返回null。

例:

char ch[100]="zhangsan 20 male,lisi 20 male,xiaohong 19 female.";

char *c=ch;

int tot=0;

char *str[20];

while( (str[tot]=strtok(c,",."))!=null)

2:char *strtok_r(char *s, const char *delim, char **ptrptr);  (  適合一次性分割後還要二次分割等)(這個貌似在windows下公尺有,不過在linux核心中能找到原始碼 )

首先它和strtok區別是 :strtok 自己內建了乙個指標,而且因為只有乙個 先分割了外層的字串,再分割內層時就會將外層的指標用於內層,而strtok_r  可以讓使用者自己提供乙個指標代替內建指標, 因此:我們可以為外層先設定乙個外層指標 再為內層設定乙個內層指標,這樣就完美的避免衝突了。

3:char *strtok_s( char *strtoken, const char *strdelimit, char **context);  (和2一樣吧 這個是用於windows的,和2一樣都是執行緒安全~~~)

例:

char buffer="zhangsan 20 male,lisi 20 male,xiaohong 19 female.",*buf=buffer;

char *str[20];

int tot=0;

char *outer_ptr=null;

char *inner_ptr=null;

while((str[tot]=strtok_s(buf,",.",&outer_ptr))!=null)

str[tot++]="***"; //這一句用來表示 外層分割

buf=null;

}

4:  char *strsep(char **stringp, const char *delim); (windows下沒有支援,在linux下使用,比strtok速度更快)

5:stl進行字串的分割

可以用find 配合substr  不過複雜度高不建議用

6:用boost進行字串的分割 需要安裝boost庫

利用boost正規表示式分割

1和3用得比較多,其他有興趣的可以在網上找找資料

mysql分割字串 mysql分割字串

專案有通過一批id去過濾結果的需求,因為這個id是從其他平台拉下來的excel,為了避免加引號逗號的麻煩,在mysql儲存過程裡面拼接。在此做個記錄。很多地方用得上。1.通過某個字元,分割字串的函式。輸入分別為f string 待分割字串 f delimiter 分割字元 f order 取的字串的...

分割字串

string.split char 返回包含此例項中的子字串 由指定 char 陣列的元素分隔 的 string 陣列。由 net compact framework 支援。string.split char,int32 返回包含此例項中的子字串 由指定 char 陣列的元素分隔 的 string ...

分割字串

最近手裡的活用到分割字串,自己嘗試寫了乙個,在網上找到幾個,留著以後備用。char steps char token char strusbinfo 512 memcpy strusbinfo,1e 2f 3g strlen 1e 2f 3g token strtok strusbinfo,step...