Strtok 和忽略用户名的能力?

Strtok and ability to ignore usernames?

所以我目前正在做一个项目,我们需要按单词解析句子(更具体地说是推文)并将单词的频率和单词本身存储在向量对中(使用自定义查找函数来增加频率) .

我目前正在使用 strtok 来解​​析句子,我想知道您是否可以忽略任何开头带有符号 @ 的单词。我目前将 strtok 函数的定界符作为一堆无用的符号和空格 !@#&()–[{}]:;',?/*\".+\^ 并且它正确地忽略了它们,但是说我有一个词:@thisismyusername,有没有办法忽略整个单词,包括 'thisismyusername' 而不仅仅是 @?

我一直在寻找有关此类内容的文档,但尚未找到任何内容。

这是我的 strtok 解析代码:

char* tempMap;
tempMap = strtok (tempHolderPos," !@#&()–[{}]:;',?/*\".+\^");

*tempHolderPos 是完整的句子。

谢谢大家!

查看 strtok 参考资料,我认为您不能 直接 那样做。尽管忽略任何以 @ 开头的标记并继续而不保存它会很容易。

你完全可以做到。例如,下面的内容将适用于您的 strtok 循环:

someloop {
    ptr = strtok (NULL, yourdelims); 
    if (*ptr == '@')
        continue;` 
    ...
}

strtok 获得标记后,您只需检查第一个字符是否为 '@',如果是,此时获取下一个单词——有效地忽略以 [ 开头的单词=13=]。

回想一下,当你取消引用一个字符指针时,你得到了字符本身。当调用 char * 变量名(指针的起始地址)时,您将获得第一个字符。因此,您只需取消对令牌的指针的引用并检查第一个字符是否为 '@',如果是,则获取下一个单词,跳过将在令牌上完成的所有其他处理。