在向量中找到一个单词的行

时间:2017-10-04 18:32:15

标签: c++ string file vector find

尝试在矢量中找到一个单词的行。

例如:

在文件中包含一些数据,例如:

  

ctrl + a move,find

     

ctrl + c copy,group

     

ctrl + z take,give

所有字母都很小。

然后我尝试在矢量中读取文件 - 没关系

然后用户想输入:move

**我希望如果用户输入move,我会在向量中找到一行,其中包含单词move并对此行执行某些操作。(例如:erase)*

但是我做错了什么,因为我的循环停在零并且它只读取文件的第一个字符串?

代码如下:

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;
            }
        }   
}

1 个答案:

答案 0 :(得分:4)

阅读string::find的参考:

  

返回值

     

第一场比赛的第一个角色的位置。如果未找到匹配项,则函数返回string::npos

所以,试试这个:

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