查找向量中的一个单词的行

问题描述:

试图通过向量中的一个单词找到一行。查找向量中的一个单词的行

例如:

在文件中的一些数据,如:

CTRL +一动,发现

Ctrl + C复制,组

CTRL + z拿,给

所有字母都很小。

然后我试图读取矢量文件 - 这没关系

然后用户要输入:移动

**我想,如果用户输入move,我发现矢量线(例如:擦除)*

但是我该怎么做,因为我的循环停在零,它只读取文件的第一个字符串?

代码如下:

void HotMap::test(std::string str) 
{ 
     std::string line; 
     std::vector<std::string> vec_keys; 
     std::string file_name_keys("read_keys.txt"); 
     std::ifstream file_keys(file_name_keys, std::ios::in); 
     std::vector<std::string>::iterator iter_vec; 


     while (std::getline(file_keys, line)) 
     { 
      for (auto & c : line) c = tolower(c); 
      vec_keys.push_back(line); 
     } 


     for (int i = 0; i < 3; i++) 
     { 
      vec_keys[i].find(str); 
      if (vec_keys[i].find(str)) 
      { 
       std::string found_str; 
       std::cout << "Found:" << vec_keys[i]; 
       //Just help to find the line..... 
       break; 
      } 
     } 
} 
+4

提示:什么是'向量:: find'的返回类型? – user463035818

+0

@ tobi303噢,是的,它是索引。但是你能帮助你找到正确的方法吗? – X21

+0

@ tobi303你的意思是'string :: find',对吧? – gsamaras

查看string::find裁判:

返回值

第一个匹配的第一个字符的位置。如果未找到匹配项,则函数返回string::npos

所以,试试这个来代替:

if (vec_keys[i].find(str) != std::string::npos) 
    std::cout << "Found:" << vec_keys[i]; 
+1

我同意 –

+0

@gsamaras但我无法得到,为什么我的循环停止。它保持在零.. – X21

+0

@ X21,因为它进入了if语句的主体和'break'被执行。 – gsamaras