C ++打印出来"未找到"仅搜索一次向量时的消息

时间:2016-06-01 05:02:06

标签: c++ vector

这里是我的代码的一小部分,我被卡住了。我希望代码能够提示用户搜索名称,即使找到了。因此,我的代码中断不会起作用。我的代码有缺陷,因为每次for循环达到我的矢量大小时,它会输出"找不到名字!" 这就是我告诉它的,但我无法找到解决这个问题的方法。我在堆栈上找到了其他帖子并在我的代码中尝试了它们但它们无法正常工作。

do
{
    cout <<"Enter name for search: ";
    cin >> name;

    for (int i = 0; i < pvector.size(); i++)
    {
        if (pvector[i]->fName == name || pvector[i]->lName == name)
        {
            cout << pvector[i]->fName << " "<< pvector[i] ->lName <<" "<<"username:"<< pvector[i]->userName <<" "<<"password:" << pvector[i]->pword <<endl;
        }else if(i == pvector.size()-1)
        {
            cout << name <<" "<<"not found!" << endl;
        }
    }
} while (cin.good());

2 个答案:

答案 0 :(得分:0)

在你的pvector中找到名字后,你应该打破当前的for循环,这意味着以下代码

cout << "Enter name for search: ";
cin >> name;

for (int i = 0; i < pvector.size(); i++)
{
    if (pvector[i]->fName == name || pvector[i]->lName == name)
    {
        cout << pvector[i]->fName << " "<< pvector[i] ->lName <<" "<<"username:"<< pvector[i]->userName <<" "<<"password:" << pvector[i]->pword <<endl;
        break; // add a break here
    }
    else if(i == pvector.size()-1)
    {
        cout << name <<" "<<"not found!" << endl;
    }
}

上面添加的中断只会破坏当前的for循环并继续其余的do ... while循环

答案 1 :(得分:0)

一旦你找到一场比赛,你就错过了一次休息,这对我有用:

var array = [{
  "name": "mike",
  "age": null
}, {
  "name": "jim",
  "age": 99
}];

array.forEach(function(v) {
  v.age === null && (v.age = undefined)
  //or
  // if(v.age === null) v.age = undefined
})

console.log(array);