在向量中通过一个单词查找行

Find line by one word in vector

本文关键字:一个 单词 查找 向量      更新时间:2023-10-16

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

例如:

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

ctrl A移动,找到

ctrl c副本,组

ctrl z拍摄,给予

所有字母很小。

然后我尝试读取向量中的文件 - 还可以

然后用户要输入:移动

**我希望,如果用户输入 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;
            }
        }   
}

阅读 string::find的参考:

返回值

第一场比赛的第一个字符的位置。如果找不到匹配项,则该功能将返回string::npos

所以,尝试一下:

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