尝试在矢量中找到一个单词的行。
例如:
在文件中包含一些数据,例如:
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;
}
}
}
答案 0 :(得分:4)
阅读string::find
的参考:
返回值
第一场比赛的第一个角色的位置。如果未找到匹配项,则函数返回
string::npos
。
所以,试试这个:
if (vec_keys[i].find(str) != std::string::npos)
std::cout << "Found:" << vec_keys[i];