在向量中逐行查找
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 非常感谢!是的,我犯了所有的错误!谢谢你的帮助!!!!!!以上是关于在向量中逐行查找的主要内容,如果未能解决你的问题,请参考以下文章