在向量中搜索C++字符串s中的单词
Searching for a word in C++ string s in vectors
我有一项任务,要找到通过cmd行arg传递到c++程序中的单词,这些单词存储在某些文本的向量中,其中每行文本都是向量中的一个新项目。我唯一的问题是实际的搜索。这是我的搜索代码。它要么根本不起作用,要么锁住、崩溃和烧伤。
while (i < size)
{
line = inputText[i];
for (int k = 0; k < kwSize; k++)
{
if (line.find(keyWords[k]) != std::string::npos)
{
cout << "Success" << keyWords[k];
}
}
i++;
}
假设
std::vector<std::string> inputText;
std::vector<std::string> keyWords;
如果你需要在任何一行中找到任何关键字,这是一种更干净的方法:
for (auto line = inputText.begin(); line != inputText.end(); ++line)
for (auto word = keyWords.begin(); word != keyWords.end(); ++word)
if (line->find(*word) != std::string::npos)
{
cout << "Success" << *word;
}
只要矢量没有以某种方式损坏,就不应该崩溃。
以下是构建在一个可以工作的应用程序(VS)中的代码。
#include <string>
#include <iostream>
using namespace std;
const int size = 5;
string keyWords[size] = {"one", "two", "three", "four", "six"};
string inputText[size] =
{
"This is one test",
"This is two test",
"This is three test",
"This is four test",
"This is five test"
};
int _tmain(int argc, _TCHAR* argv[])
{
int i = 0;
string line;
while (i < size)
{
line = inputText[i];
for (int k = 0; k < size; k++)
{
if (line.find(keyWords[k]) != std::string::npos)
{
cout << "Success" << keyWords[k];
}
}
i++;
}
char inchar;
cin >> inchar;
return 0;
}
假设
std::vector<std::string> inputText;
std::vector<std::string> keyWords;
使用C++11,您还可以编写以下
for (const auto& line : inputText)
for (const auto& word : keyWords)
if (line.find(word) != std::string::npos)
{
cout << "Success" << word << endl;
}
相关文章:
- 从字符串变量中逐字符读取单词
- 使用std::mt19937从字符串中返回一个随机单词
- C++-字符串是否包含一个带有简单循环的单词
- 在C++中查找(奇怪的)字符串中的单词
- 当字符串是某个单词时给出输出?
- 替换字符串中的单词,但忽略引号中的单词
- 替换字符串位置 X 中的单词C++
- 视觉C++使用 map 来比较字符串中的每个单词
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 输出返回编号。等于输入字符串的单词的字符串数
- 在字符串的每个单词的末尾插入字符串
- 分析字符串中的双精度和单词
- 如何使用运算符>>在自定义字符串中输入多个单词?
- 反转字符串中单词的位置,而不更改 O(1) 空格限制中特殊字符的顺序
- 使用正则表达式c++从单词和分隔符之间的字符串中提取所有子字符串
- C++读取大文件并将其保存到字符串中,然后删除特定的随机单词
- 字符串单词的唯一哈希值
- 使用std :: string ::比较(C )的字符串/单词操纵
- 如何比较字符串单词和聊天猜测
- 用C++计算文本文件中的相同字符串/单词