想請教下,在vc當中,要重新寫乙個 類似 split 的 類該怎麼做?
現在的要求是,對乙個字串進行分割,並放到陣列當中去.
基本實現想法如下:
定義:char str[256]="123,&456,&789&10"; // 將要被分割的字串
char *pstrbuf[256];// 字串陣列,用來存放分開的字串
int nbuf; // 表示分成幾段;
char parseid[256]=",&" // 分割識別符號號
函式:void stringparse(char* pstrline,// 將要被分割的字串
char** pstrbuf,// 字串陣列,用來儲存分開後的字串
int* nbuf,// 分割成幾段
char* pstrtoksep); // 分割識別符號號
char* pstrtoken;
*nbuf = 0;
/* strtok(char *strtoken,const char *strdelimit )
strtoken和strdelimit一定要用字元陣列格式的。
也就是說。入口只能是字元陣列元素位址
*/pstrtoken = strtok(pstrline, pstrtoksep);
while(pstrtoken != null)
現在,要把 ,& 作為 乙個分割識別符號號.通過上面的函式進行分割.
預想的分割結果是:
該字串被分成3段.
pstrbuf[0] = "123";
pstrbuf[1] = "456";
pstrbuf[2] = "789&10";
但是,我現在分割出來的效果是:
該字串被分成4段.
pstrbuf[0] = "123";
pstrbuf[1] = "456";
pstrbuf[2] = "789";
pstrbuf[3] = "10";
請高手幫助啊~~~~~~~~~~怎麼樣讓程式把",&"看做乙個整體.執行出我現在的效果就是說明 ",&" 不是乙個整體.
按你的要求,strtok已經滿足不了你的要求,用strstr控制指標位置:
void stringparse(char* pstrline,// 將要被分割的字串
char** pstrbuf,// 字串陣列,用來儲存分開後的字串
int* nbuf,// 分割成幾段
char* pstrtoksep) // 分割識別符號號
pstrbuf[i] = pstrline;
}
VC 字串轉化和分割
備忘 為了適用於unicode環境,要養成使用 t 巨集的習慣 1 格式化字串 cstring s s.format t the num is d.i 2 轉為 int 轉10進製最好用 ttoi 它在 ansi 編碼系統中被編譯成 atoi 而在 unicode 編碼系統中編譯成 wtoi 用 t...
VC實現字串分割的函式strtok
原型 char strtok char s,const char delim 標頭檔案 include strtok 函式分割字串為一組字串。引數s為想要分割的字串,引數delim則為分割字串中包含的所有字元,delimiters支援多個分割符。當strtok 在引數s的字串中發現引數delim中包...
mysql分割字串 mysql分割字串
專案有通過一批id去過濾結果的需求,因為這個id是從其他平台拉下來的excel,為了避免加引號逗號的麻煩,在mysql儲存過程裡面拼接。在此做個記錄。很多地方用得上。1.通過某個字元,分割字串的函式。輸入分別為f string 待分割字串 f delimiter 分割字元 f order 取的字串的...