我想使用std :: find()来查看文件中是否存在id,例如:
//file:
2467
435
24667
这是功能:
bool idInFile(string argId)
{
std::ifstream anchorFile("anchors");
string line;
if(!anchorFile )//file not opened or empty
{
//cout << "file cannot be opened" << endl;
return false;
}
anchorFile.seekg(0, ios::end);
if(anchorFile.tellg() == 0)
{
//cout << "file is empty" << endl;
return false;
}
anchorFile.seekg(0, ios::beg);
while(getline(anchorFile, line))
{
std::size_t found = line.find(argId);
if (found!=std::string::npos)
return true;
}
return false;
}
在这种情况下:如果我尝试搜索id 246,该函数返回true,因为&#34; 2467&#34;包含&#34; 246&#34;,如果只有id&#34; 246&#34;我需要它返回true存在于一条线上。
答案 0 :(得分:1)
basic_string::find
根据its documentation找到子字符串。
在这种情况下,您需要完全匹配;改为使用basic_string::compare
或==
(后者在内部使用compare
。