在向量中逐行查找

Posted

技术标签:

【中文标题】在向量中逐行查找【英文标题】:Find line by one word in vector 【发布时间】:2017-10-04 18:32:15 【问题描述】:

试图在向量中逐字查找一行。

例如:

在一个文件中一些数据,比如:

ctrl+移动,查找

ctrl+c 复制,分组

ctrl+z 获取,给予

所有字母都很小。

然后我尝试读取向量中的文件 - 没关系

然后用户想输入:move

**我希望如果用户输入move,我会在向量中找到一行,其中包含单词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;
            
           

【问题讨论】:

提示:vector::find 的返回类型是什么? @tobi303 哦,是的,它是索引。但是你能帮助你走上正确的道路吗? @tobi303 你的意思是string::find,对吧? 【参考方案1】:

阅读string::find的参考:

返回值

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

所以,试试这个吧:

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

【讨论】:

我同意 @X21 因为它进入了 if 语句的主体,break 被执行。 @gsamaras 非常感谢!是的,我犯了所有的错误!谢谢你的帮助!!!!!!

以上是关于在向量中逐行查找的主要内容,如果未能解决你的问题,请参考以下文章

如何将张量逐行乘以 PyTorch 中的向量?

使用fstream将文件逐行读取到C++中的二维向量中[重复]

在报告中逐行检查

在 Go 中逐行读取文件

如何在 Python 中逐行打印字典?

golang 在#golang中逐行读取文件