如何以正确的方式在向量中查找元素 - C++

how to find an element in vector in the right way - C++

我正在尝试从向量中删除一个元素。但是我想,我有一个具体的问题:

我的阅读文件数据:

移动 ctrl+a,F3

复制 ctrl+v,shift+v

搜索 F3,F4

  1. 正在尝试读取文件
  2. 输入一个我想听的单词(e.x.: move)
  3. 问题是,我只需要输入一个(如示例中的)单词,然后听取整个命令串(move ctrl+a,F3).

    我需要的只是一个单词查找一个字符串。但是在下面的代码中我不能这样做,帮助,请解决问题。在下面的代码中,我只能找到一个单词,如果在一个文件中只有一个单词,而不是像 (move ctrl+a,F3),但是如果一个字符串包含好几个字。。找不到。

     std::vector<std::string> HotMap::remove_element(std::vector<std::string> MyVector){
    //remove a element ,reading a vector of cmds, then deletting one chosen of them
    std::string delete_str;
    std::vector<std::string>::iterator iter_vec;
    
    std::cout << "Enter an element,which you want to delete: " << std::endl;
    std::cin >> delete_str;
    for (auto & c : delete_str) c = tolower(c);                                         //For the standard for the right searching,all letters are in lower registr
    
    
    //Here, iter_ve is my vector(vec_get_smd) it swiches to algorithm 
    //std::ind that look for a cmd command ,which user is trying to input
    iter_vec = std::find(MyVector.begin(), MyVector.end(), delete_str);
    
    if(iter_vec!= MyVector.end())                                                       //Check if is there an element that yoy want earse 
    {
        std::cout << "Found a element and earsed it!" << std::endl;
        MyVector.erase(iter_vec);
    }
    else
    {
        std::cout << "The element wasn't found!" << std::endl;
    }
    
    for (iter_vec = MyVector.begin(); iter_vec != MyVector.end(); ++iter_vec)           //Just for myself, showing results
    {
        std::cout << *iter_vec << std::endl;
    }
    
    return std::vector<std::string>(MyVector); }
    

    我的成绩:

read KEYS from a file TWO,below

move,fsf,fsdf,aaa

copy

search

Enter an element,which you want to delete: move

The element wasn't found!

我想,你需要尝试使用 std::search():

std::vector<std::string> delete_word(“移动”);

auto iterator=std::search (MyVector.begin(),MyVector.end(),delete_word.begin(), delete_word.end());

它试图在 MyVector 中找到您的 delete_word