std :: find:在文件中查找精确的字符串c ++

时间:2014-05-01 20:24:35

标签: c++ algorithm file search

我想使用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存在于一条线上。

1 个答案:

答案 0 :(得分:1)

basic_string::find根据its documentation找到子字符串

在这种情况下,您需要完全匹配;改为使用basic_string::compare==(后者在内部使用compare