首先用ctrl + d结束后,程序会跳过“cin>> contBuscado” 并前往。 我不知道为什么会这样,我用过.ignore和.clear但没有任何反应。
#include <iostream>
#include<vector>
using namespace std;
struct Contacto{
string nombre;
int numero;
}contacto;
int main() {
vector<Contacto> listaContactos;
while(cout<<"Nombre:" && getline(cin,contacto.nombre)){
cout<<"Telefono:";
cin>>contacto.numero;
cin.ignore();
listaContactos.push_back(contacto);
}
cin.clear();
cout << "\nIntroduce el nombre del contacto a buscar: ";
string contBuscado="";
cin >> contBuscado;
cin.ignore();
for(Contacto const& con:listaContactos){
if(con.nombre==contBuscado){
cout<<"El telefono de "<<contBuscado<<" es "<<con.numero<<"\n";
return 0;
}
}
cout<<"\nEl contacto introducido no se encuentra en la lista\n";
return 0;
}
答案 0 :(得分:1)
使用 Ctrl D 结束输入后,您已结束程序的标准输入。此时,您无法再提供任何输入。
您需要为用户添加退出this.setState((prevState) => ({ counter: prevState.counter + 1 }));
循环的方法,例如输入一个空行。
此外,您会发现在所有情况下使用std::getline()
而不是while
更容易。 1}}不建议用于交互式输入,因为它的行为可能令人困惑。