C++ 如何实现该函数的while循环
我正在做一个学校项目,我们将制作一本联系簿。在其中一个函数中,它必须使用名字查找联系人 出现的错误是,它只显示向量中的一个触点。我希望显示所有同名联系人 如何实现一个循环或计数器(I++),使其包含所有同名联系人,而不仅仅是第一个索引 <新的C++,感谢所有的帮助: 我的职能:C++ 如何实现该函数的while循环,c++,C++,我正在做一个学校项目,我们将制作一本联系簿。在其中一个函数中,它必须使用名字查找联系人 出现的错误是,它只显示向量中的一个触点。我希望显示所有同名联系人 如何实现一个循环或计数器(I++),使其包含所有同名联系人,而不仅仅是第一个索引
int findTargetFirstName(向量和bok,字符串目标){
对于(int i=0;i0){
字符串名;
cout一种方法是添加一个参数来确定从哪个元素开始
int findTargetFirstName(vector<Kontaktbok>& bok, string target, int start = 0) {
for (int i = start; i < bok.size(); i++)
if (bok[i].fnamn == target) return i;
return -1;
}
void search(vector<Kontaktbok>& bok) {
if(bok.size() > 0) {
string firstname;
cout << "First name of the contact: ";
getline(cin, firstname);
int pos = findTargetFirstName(bok, firstname);
cout << "Firstname, Lastname, Address, Pnummer, E-post, Telefonnummer" << endl;
while (pos>=0){ // change if to while
cout << left;
cout << setw(10) << bok[pos].fnamn << left
<< setw(15) << bok[pos].enamn << left
<< setw(20) << bok[pos].adress << left
<< setw(15) << bok[pos].pnummer <<left
<< setw(25) << bok[pos].epost <<left
<< setw(15) << bok[pos].telnummer << left << endl;
pos = findTargetFirstName(bok, firstname, pos + 1); // search for next contact
}
cout << "********************************************************************************" << endl;
}
}
一种方法是添加一个参数来确定从哪个元素开始
int findTargetFirstName(vector<Kontaktbok>& bok, string target, int start = 0) {
for (int i = start; i < bok.size(); i++)
if (bok[i].fnamn == target) return i;
return -1;
}
void search(vector<Kontaktbok>& bok) {
if(bok.size() > 0) {
string firstname;
cout << "First name of the contact: ";
getline(cin, firstname);
int pos = findTargetFirstName(bok, firstname);
cout << "Firstname, Lastname, Address, Pnummer, E-post, Telefonnummer" << endl;
while (pos>=0){ // change if to while
cout << left;
cout << setw(10) << bok[pos].fnamn << left
<< setw(15) << bok[pos].enamn << left
<< setw(20) << bok[pos].adress << left
<< setw(15) << bok[pos].pnummer <<left
<< setw(25) << bok[pos].epost <<left
<< setw(15) << bok[pos].telnummer << left << endl;
pos = findTargetFirstName(bok, firstname, pos + 1); // search for next contact
}
cout << "********************************************************************************" << endl;
}
}
不要在第一个结果出现时返回,而是将其添加到std::vector中,并在您似乎知道的for循环之后返回整个向量,因此第一步可能是使findTargetFirstName
返回索引的vector
,而不是仅返回第一个匹配项,或者使其开始从一些startIndex
并重复调用它。适当的缩进会使人们更容易想帮助你。与其在第一个结果时返回,不如将其添加到std::vector中,并在你似乎知道的for循环后返回整个向量std::vector
,因此可能的第一步是使findTargetFirstName代码>返回索引的向量
,而不仅仅是第一个匹配项,或者让它开始从一些开始搜索索引
,并重复调用它。适当的缩进将使人们更容易帮助你。