C\C++ strtok()函数的使用及字符串处理
答案:2 悬赏:0 手机版
解决时间 2021-11-20 16:19
- 提问者网友:兔牙战士
- 2021-11-20 09:07
C\C++ strtok()函数的使用及字符串处理
最佳答案
- 五星知识达人网友:第四晚心情
- 2021-11-20 10:06
strtok = find token in string.
它被设计用于词法分析的前期,token分离的阶段。
你的需求需要一点简单的语法结构的嵌入,所以不适合使用这个函数。
你有几个选择:
1、编写你自己的语法(DSL)解释器。
2、使用某个支持正则表达式匹配的函数库。
3、仅处理这种特别的字符串,就这么机械地匹配吧。
从表述上看,各方案的优劣你也是很容易想清楚的,这里就不详细说了。
它被设计用于词法分析的前期,token分离的阶段。
你的需求需要一点简单的语法结构的嵌入,所以不适合使用这个函数。
你有几个选择:
1、编写你自己的语法(DSL)解释器。
2、使用某个支持正则表达式匹配的函数库。
3、仅处理这种特别的字符串,就这么机械地匹配吧。
从表述上看,各方案的优劣你也是很容易想清楚的,这里就不详细说了。
全部回答
- 1楼网友:旧脸谱
- 2021-11-20 11:12
strtok介绍
众所周知,strtok可以根据用户所提供的分割符(同时分隔符也可以为复数比如“,。”)
将一段字符串分割直到遇到"/0".下面给出你一个例子,详细说明一下,应该会更直白的了解:
比如,分隔符=“,” 字符串=“Fred,John,Ann”
通过strtok 就可以把3个字符串 “Fred” “John” “Ann”提取出来。
上面的C代码为
QUOTE:
int in=0;
char buffer[]="Fred,John,Ann"
char *p[3];
char *buf = buffer;
while((p[in]=strtok(buf,","))!=NULL) {
in++;
buf=NULL; }
如上代码,第一次执行strtok需要以目标字符串的地址为第一参数(buf=buffer),之后strtok需要以NULL为第一参数
(buf=NULL)。指针列p[],则储存了分割后的结果,p[0]="John",p[1]="John",p[2]="Ann",而buf就变
成 Fred/0John/0Ann/0。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯