执行跳过 getline()
Execution skipping getline()
在用ctrl+d结束第一个后,程序跳过"cin>> contBuscado"并去 for。我不知道为什么会发生这种情况,我使用了 .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 listan";
return 0;
}
使用 CtrlD 结束输入后,您已经结束了程序的标准输入。此时,您无法再提供任何输入。
您需要为用户添加退出while
循环的方法,例如输入空行。
此外,您会发现在所有情况下使用std::getline()
比 cin >>
更容易。不建议将cin >>
用于交互式输入,因为它的行为可能会令人困惑。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- Seg Fault Issue C++ (file IO / getline)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何以及何时使用 getline 函数执行计算?
- 如何使此函数使用 getline 读取字符串并使用 int 执行相同的行为?
- 执行跳过 getline()
- 如何从 std::string 执行"getline"?
- 而(getline)在VTK程序中未执行
- while(getline(myReadFile, temp, ':')) 执行一次迭代太多导致向量越界
- 尝试执行时出现 cin.getline 错误
- 如何使用getline执行最后一行
- 在c++中执行getline函数调用时,何时设置failbit ?