如何使用strtok_s函数从一个字符串中分离出单词如何使用strtok_s函数从一个字符串中分离出单词
使用strtok_s函数从一个字符串中分离出单词 下面的代码从含有多个结束符的字符串中分离出单词来,需要对strtok_s有清楚的认识。
这段代码是我在写一个处理文件中单词个数时用来分离读取到的字符串中的单词时写的,亲
测可用~
1 void ParseBuffer(CWordCounter *pCounter, 2 CWordBuffer *buf)
3 {
4 char *strSrc = buf->m_buff; //
缓冲块首地址 5
6 char *st...
如何使用strtok_s函数从一个字符串中分离出单词
使用strtok_s函数从一个字符串中分离出单词 下面的代码从含有多个结束符的字符串中分离出单词来,需要对strtok_s有清楚的认识。
这段代码是我在写一个处理文件中单词个数时用来分离读取到的字符串中的单词时写的,亲
测可用~
1 void ParseBuffer(CWordCounter *pCounter, 2 CWordBuffer *buf)
3 {
4 char *strSrc = buf->m_buff; //
缓冲块首地址 5
6 char *strDelim = " \r\t\n"; //
缓冲块中单词之间的分隔符 7
8 char *strToken = NULL; //
指向将被处理的单词 9
10 char *next_token = NULL; //
保存缓冲块中下一个将被读取的单词的位置 11
12
13 string str; //
保存分离出来的单词 14
15 int nWordTotalInBytes =
buf->m_nWordLengthInBytes; //需要被处理的16
单词总字节数 17
18 strToken = strtok_s(strSrc, strDelim,
19 &next_token);
20
21 while (1)
22 {
23 while (NULL != strToken)
24 {
25 str.assign(strToken);
26 pCounter->InsertItem(str);
27 strToken = strtok_s(NULL, 28 strDelim, &next_token);
}//退出循环
示该部分单词分析的时候遇29
到了NULL结束符,继续分离缓冲块中剩下的字符 30
31
32 if ((next_token+2) > (strSrc+nWordTotalInBytes)) //这里最好33
自己用笔画一下,不然很容易出错~ 34
{//移动位置超过了最后一个有效字符 35
36 break;
37 }
38
//移动到下一个开始扫描的字符 39
40 while (
41 ((next_token+1) < (strSrc+nWordTotalInBytes)) //没有超过最后42
一个有效字符 43
44 && !sw::IsLetter(*next_token)) 45 {
46 ++next_token;
47 //++nWordProcessedInBytes;
}
if ((next_token+2) > (strSrc+nWordTotalInBytes))
{//移动位置超过了最后一个有效字符
break;
}
strToken = strtok_s(next_token,
strDelim, &next_token);
if ((next_token+2) > (strSrc+nWordTotalInBytes)
|| (NULL == strToken))
{//移动位置超过了最后一个有效字符,或者位置内容为null
break;
}
}
}
在设置过滤字符的时候注意下(这是我在实际中犯的错误),在过滤文本中的字符时最好加上:'\r'(回车)~
本文档为【如何使用strtok_s函数从一个字符串中分离出单词】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。