【发布时间】:2014-11-11 21:20:00
【问题描述】:
我想对strtok() 说,除了字母数字字符之外的所有内容都用作分隔符。
我的尝试是ref的例子:
/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
但是,我将解析真实的文本文件(包含对网站的评论)。目前,我检查是否出现了其他分隔符,并增加了strtok() 的第二个参数。例如,我看到了[,所以我做了" ,.-[" 等等,但是好吧,我可能会遗漏一些东西,也许一个新的文本文件包含一个新的分隔符。
我不能做一些更聪明的事情(实际上是正确的,因为事实并非如此)吗?
例如,如果我得到:
[Hello_sir I'm George]
我想获得这些代币:
Hello
sir
I
m
George
问题是我不知道哪些是分隔符。
我想说除了字母数字字符之外的所有内容都用作分隔符。
编辑
我想逐个字符检查它是否是字母数字,但我希望有一些内置的东西,比如根据需要提供strtok()。
【问题讨论】:
-
也许你可以只使用
isalphachar by char ? cplusplus.com/reference/cctype/isalpha -
哦,我也想过,让我更新@user2485710
-
stackoverflow.com/a/26243667/971127 因为没有所以做。
-
@BLUEPIXY,我也需要保留数字,我说 alphanumerical 有点害羞。你认为如果我将第二个参数作为第二个参数传递给你的函数
isalnum()就可以了吗? -
@G.Samaras 会好的。