所以我目前正在做一个项目,我们需要按字解析句子(更具体地说是推文),并将单词和单词本身的频率存储在一个向量对中(使用自定义查找函数来增加频率)
我目前正在使用strtok来解析句子,我想知道你是否可以在它们的开头插入任何带有符号@
的单词。我目前有strtok函数的分隔符作为一堆非有用的符号和空格!@#&()–[{}]:;',?/*\".+\\^
并且它正确地忽略它们,但是我说有一个词:@thisismyusername
,有没有办法忽略整个单词,包括'thisismyusername'
而不只是@
?
我一直在寻找类似这样的文档,但还没找到任何东西。
这是我的strtok解析代码:
char* tempMap;
tempMap = strtok (tempHolderPos," !@#&()–[{}]:;',?/*\".+\\^");
* tempHolderPos
是完整的句子。
谢谢你们!
答案 0 :(得分:1)
你可以做到这一点。例如,以下内容适用于您的strtok
循环:
someloop {
ptr = strtok (NULL, yourdelims);
if (*ptr == '@')
continue;`
...
}
从strtok
获取令牌后,您只需检查第一个字符是否为'@'
,如果是,请在此时获取下一个字词 - 实际上忽略以{{1开头的字词}}。
回想一下,当您取消引用字符指针时,您将获得该字符本身。当调用'@'
变量名称(指针的起始地址)时,您将获得第一个字符。因此,您只需取消引用指向令牌的指针并检查第一个char是否为char *
,如果是,请转到下一个单词,跳过对令牌执行的所有其他处理。
答案 1 :(得分:0)
查看strtok
引用,我认为你不能直接直接。很容易忽略以@
开头的任何令牌,只是继续而不保存它。