【发布时间】:2016-04-14 13:24:18
【问题描述】:
我想知道在 C++ 中如何在字符串中搜索字符串列表中 ANY 的第一个实例。 std::string::find_first_of() 的一种全字版本:“在字符串中搜索与其参数中指定的任何字符匹配的第一个字符”。
我想要在字符串中搜索与提供的列表/数组中的任何单词匹配的第一个单词的东西。需要明确的是,我不想在数组中搜索字符串的实例。我想在一个字符串中搜索一个数组中的某个实例。
我的目标是能够取一个句子,并删除列表中的所有单词。例如,如果我给它列表{"the" "brown", "over"};
和句子,"the quick brown fox jumped over the lazy dog",
我希望它输出" quick fox jumped lazy dog"。
如果我愿意,我希望能够给它一个甚至 100 个单词的列表;我需要它是可扩展的。
我能想到的唯一解决方案是在我的文本块上的while 循环中使用std::find(stringArray[0]),并保存找到该单词的索引,然后将所有这些放在另一个for 循环中并对我数组中的每个单词执行此操作,将每个单词的索引保存到一个巨大的列表中。然后可以选择对该列表进行数字排序,最后遍历并删除该列表中某个位置的每个单词。
我真的希望有一个功能或更简单的方法来做到这一点,因为我的解决方案似乎很难而且非常慢,特别是因为我需要在许多不同的字符串上多次使用它来遍历所有句子50,000 个字符的文本块。任何更好的优化将是首选。
【问题讨论】:
-
当我想使用或搜索字符串时,我会查找
std::string类中可用的方法。我发现这个 find_first_of` 函数看起来很有希望。 -
请用您的代码尝试编辑您的问题。然后,我们可以为您提供帮助。
标签: c++ arrays string text-search