搜索字符串时,矢量下标超出范围

时间:2015-10-14 02:53:48

标签: c++ vector

我正在打开一个文件并阅读10k名称列表。一旦我将它放入数组(names []),我就需要搜索数组,看看名称是否与输入的字符串匹配,如果是,我需要将这些匹配放入向量(vsFirst)。这很简单,但我得到的矢量下标超出了范围。这是我的部分代码:

bool NameSearch::FindLastNames(vector<string> &vsFirst, string n)
{
    name = n;
    int count = 0;
    for (int i = 0; i < total; i++)
    {
        string holder = names[i];
        string find = name;
        cout << holder;
        int index = holder.find_first_of(",");
        if ((holder.rfind(find, index)) && holder.rfind(find, index)<=  holder.length())
        {
            cout << "it was found";
            vsFirst.push_back(holder);
            bReady = true;
        }
    }
    return bReady;
} 

我做错了什么?我已经运行了一些测试,看起来它甚至没有进入for循环。我对该函数的调用是:

vector<string> lastNames;


nSearch.FindLastNames(lastNames, searchTerm);

数组中的所有名称都是lastname,firstname。我知道数组已经加载了名称。

帮助?谢谢!

1 个答案:

答案 0 :(得分:1)

要检查是否找到子字符串,您需要与std::string::npos

进行比较

变化

if ((holder.rfind(find, index)) && holder.rfind(find, index)

if (holder.rfind(find, index) != std::string::npos && holder.rfind(find, index) != std::string::npos)