您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 使用strtok_s函数从一个字符串中分离出单词
使用strtok_s函数从一个字符串中分离出单词下面的代码从含有多个结束符的字符串中分离出单词来,需要对strtok_s有清楚的认识。这段代码是我在写一个处理文件中单词个数时用来分离读取到的字符串中的单词时写的,亲测可用~1234567891011121314151617181920212223242526272829voidParseBuffer(CWordCounter*pCounter,CWordBuffer*buf){char*strSrc=buf-m_buff;//缓冲块首地址char*strDelim=\r\t\n;//缓冲块中单词之间的分隔符char*strToken=NULL;//指向将被处理的单词char*next_token=NULL;//保存缓冲块中下一个将被读取的单词的位置stringstr;//保存分离出来的单词intnWordTotalInBytes=buf-m_nWordLengthInBytes;//需要被处理的单词总字节数strToken=strtok_s(strSrc,strDelim,&next_token);while(1){while(NULL!=strToken){str.assign(strToken);pCounter-InsertItem(str);strToken=strtok_s(NULL,strDelim,&next_token);}//退出循环表示该部分单词分析的时候遇到了NULL结束符,继续分离缓冲块中剩下的字符if((next_token+2)(strSrc+nWordTotalInBytes))//这里最好自己用笔画一下,不然很容易出错!{//移动位置超过了最后一个有效字符break;}//移动到下一个开始扫描的字符while(((next_token+1)(strSrc+nWordTotalInBytes))//没有超过最后一个有效字符303132333435363738394041424344454647&&!sw::IsLetter(*next_token)){++next_token;//++nWordProcessedInBytes;}if((next_token+2)(strSrc+nWordTotalInBytes)){//移动位置超过了最后一个有效字符break;}strToken=strtok_s(next_token,strDelim,&next_token);if((next_token+2)(strSrc+nWordTotalInBytes)||(NULL==strToken)){//移动位置超过了最后一个有效字符,或者位置内容为nullbreak;}}}在设置过滤字符的时候注意下(这是我在实际中犯的错误),在过滤文本中的字符时最好加上:'\r'(回车)!分类:C/C++
本文标题:使用strtok_s函数从一个字符串中分离出单词
链接地址:https://www.777doc.com/doc-2687129 .html