C++ strtok()實(shí)現(xiàn)功能分析
C++編程語(yǔ)言的應(yīng)用方式非常靈活,能夠支持各種程序設(shè)計(jì)風(fēng)格。我們今天在這里為大家介紹的是利用C++ strtok()來(lái)實(shí)現(xiàn)Split函數(shù)的功能的相關(guān)方法,希望大家能從中體驗(yàn)到這一語(yǔ)言功能的強(qiáng)大。#t#
相關(guān)函數(shù):index, memchr, rindex, strpbrk, strsep, strspn, strstr
表頭文件:#include <string.h>
C/C++中的Split函數(shù)是C++ strtok()其函數(shù)原型如下:
- char * strtok (char * str, const char * delimiters);
函數(shù)說(shuō)明
C++ strtok()用來(lái)將字符串分割成一個(gè)個(gè)片段。參數(shù)str指向欲分割的字符串,參數(shù)delimiters則為分割字符串,當(dāng)strtok()在參數(shù)str的字符串中發(fā)現(xiàn)到參數(shù)delimiters的分割字符時(shí)則會(huì)將該字符改為'\0'字符。在第一次調(diào)用時(shí),strtok()必需給予參數(shù)str字符串,往后的調(diào)用則將參數(shù)str設(shè)置成NULL。每次調(diào)用成功則返回下一個(gè)分割后的字符串指針。
返回值
返回下一個(gè)分割后的字符串指針,如果已無(wú)從分割則返回NULL。
示例-1
- /* strtok example */
- #include <stdio.h>
- #include <string.h>
- int main ()
- {
- char str[] ="a,b,c,d*e";
- const char * split = ",";
- char * p;
- p = strtok (str,split);
- while(p!=NULL) {
- printf ("%s\n",p);
- p = strtok(NULL,split);
- }
- getchar();
- return 0;
- }
本例中,實(shí)現(xiàn)對(duì)字符串'a,b,c,d*e"用逗號(hào)(,)來(lái)作界定符對(duì)字符串進(jìn)行分割。 輸出結(jié)果將如下所示:
- a
- b
- c
- d*e
因?yàn)閐elimiters支持多個(gè)分割符, 我們將本示例中的語(yǔ)句行
- const char * split = ",";
改成
- const char * split = ",*"; //用逗號(hào)(,)和星號(hào)(*)對(duì)字符串進(jìn)行分割
這樣輸出結(jié)果將如下所示:
- a
- b
- c
- d
- e
例子2:
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- char string[] = "1:ip:ipport:user ";
- char seps[] = ": ";
- char *token;
- int main( void )
- {
- printf( "Tokens:\n " );
- // Establish string and get the first token:
- token = strtok( string, seps ); // C4996
- // Note: strtok is deprecated; consider using strtok_s instead
- while( token != NULL )
- {
- // While there are tokens in "string "
- printf( "%s\n ", token );
- // Get next token:
- token = strtok( NULL, seps ); // C4996
- }
- system( "pause ");
- return 0;
- }
以上就是對(duì)C++ strtok()的相關(guān)介紹。