使用strtok_s函数从一个字符串中分离出单词
下面的代码从含有多个结束符的字符串中分离出单词来,需要对strtok_s有清楚的认识。这段代码是我在写一个处理文件中单词个数时用来分离读取到的字符串中的单词时写的,亲测可用~
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
void ParseBuffer(CWordCounter *pCounter, CWordBuffer *buf){ char *strSrc = buf->m_buff; //缓冲块首地址 char *strDelim = " \r\t\n"; //缓冲块中单词之间的分隔符 char *strToken = NULL; //指向将被处理的单词 char *next_token = NULL; //保存缓冲块中下一个将被读取的单词的位置 string str; //保存分离出来的单词 int nWordTotalInBytes = 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)) //没有超过最后一个有效字符 && !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)) {//移动位置超过了最后一个有效字符,或者位置内容为null break; } }} |
在设置过滤字符的时候注意下(这是我在实际中犯的错误),在过滤文本中的字符时最好加上:'\r'(回车)!
使用strtok_s函数从一个字符串中分离出单词的更多相关文章
- 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在ACSII码范围内. 输出描述: 输出范围在( ...
- 请实现一个函数,把字符串中的每一个空格替换成“%20”,比如输入 “We are Happly。” 则输出“we%20are%20happy。”
请实现一个函数,把字符串中的每一个空格替换成"%20",比如输入 "We are Happly." 则输出"we%20are%20happy. &q ...
- 【c语言】字符串替换空格:请实现一个函数,把字符串中的每一个空格替换成“%20”
// 字符串替换空格:请实现一个函数,把字符串中的每一个空格替换成"%20". // 比如输入"we are happy.",则输出"we%20are ...
- php字符串查找函数 php查找字符串中出现的次数函数substr_count,判断字符串中是否包含另一个字符串函数strpos
php字符串查找函数 php查找字符串中出现的次数函数substr_count,判断字符串中是否包含另一个字符串函数strpossubstr_count($haystack, $needle [,$o ...
- 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
一.题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 二.解题思路 1)简单暴力解法 ...
- (转)sscanf() - 从一个字符串中读进与指定格式相符的数据
(转)sscanf() - 从一个字符串中读进与指定格式相符的数据 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, stri ...
- oracle中一个字符串包含另一个字符串中的所有字符
oracle中一个字符串包含另一个字符串中的所有字符 --解决监理报告中所勾选的标段信息,与该用户所管理的标段字符串不匹配的问题. select * from a where instr(a,b)&g ...
- php 判断字符串在另一个字符串中位置
$email='user@example.com'; //定义字符串$result=strstr($email,'@'); //返回子字符串echo $result; / ...
- PHP:strpos()-返回字符串在另一个字符串中第一次出现的位置
strpos()函数返回字符串在另一个字符串中第一次出现的位置.如果没有找到该字符串,则返回false. 语法:strpos(sting, find [, start]) string ,必须,要搜索 ...
随机推荐
- codeforces #472(div 1)
B(two point) 题意: 给出长度为n的非递减数组E[1..n],对于所有三元组(i,j,k),1<=i<j<k<=n且Ek-Ei<=U,我们需要计算出最大的(E ...
- 【Vue 学习系列 - 01】- 环境搭建(Win7)
1. 根据系统下载Node.js 下载地址:http://nodejs.cn/download 2. 安装Node.js 点击安装Node.js,在安装目录D:\Program Files\nodej ...
- iinflux数据库使用
特殊用法: http://blog.fatedier.com/2016/07/05/research-of-time-series-database-influxdb/ 创建表及表中的key和valu ...
- .net core mvc启动顺序以及主要部件1
原文:.net core mvc启动顺序以及主要部件1 首先我是新人一个写这些东西也是为了增加记忆,有不对的地方请多多指教. 说回正题,打开Program.cs文件,看到在有个CrateWebHost ...
- discuz搬家
1.需要重命名forumdata下面的cache和templates文件夹 2.如果数据库账户名和密码有改动过,需要修改config.inc.php 3.保证uc_server的链接正确!
- 【Todo】Java的JIT机制
先是参考了这篇说的不怎么详细的文章<Java的JIT机制>(Link) JIT是just in time,即时编译技术.使用该技术,能够加速java程序的执行速度. 通常javac将程序源 ...
- 【effective c++】定制new和delete
条款49: 了解new-handler的行为 operator new 和 operator delete只适合用来分配单一对象.array所用的内存由operator new[]分配出来,并由ope ...
- 数据库官方在线文档列表(mysql, postgreSQL)
1. mysql http://dev.mysql.com/doc/ 2. postgreSQL https://www.postgresql.org/docs/
- IOS自己主动布局中的浮动布局(6)----MyFloatLayout横空出世
https://github.com/youngsoft/MyLinearLayout 前言 在MyLayout的6大布局中,每种布局都有不同的应用场景. 且每种布局的子视图的约束机制不一样:线性布局 ...
- js对象的属性问题
ES6之前js的对象的属性只能是字符串, <html> <head> <script type="text/javascript"> var a ...