while (1)
{
cout << "Enter the Citizen ID number of the worker or Enter 0 to exit:" << endl;
getline (cin, j);
for (i=0; i<5; i++)
{
if (workers[i]->IDno == j)
{
wFind = 1;
cout << "Choose your option:" << endl;
cout << "1- Display all details of the worker" << endl;
cout << "2- Display number of the days worker delayed" << endl;
cout << "3- Display number of the days worker missed" << endl;
cin >> k;
switch (k)
{
case 1:
workers[i]->AWorker();
break;
case 2:
cout << workers[i]->TotalDaysDelayed() << endl;
break;
case 3:
cout << workers[i]->TotalDaysMissed() << endl;
break;
default:
break;
}
}
else
wFind = 0;
}
if (wFind == 0)
cout << "ERROR: No worker has the ID number that you typed!" << endl;
}
注意:wFind
初始化为2
。
当我执行此代码时,我总是得到这个输出:
输入工人的公民身份证号码或输入0表示退出:
错误:没有工人拥有您输入的ID号!
输入工人的公民身份证号码或输入0退出:
有趣的是,我的代码可以在获取字符串j
的输入之前完成循环中的循环。这怎么可能,我该怎么做才能解决它?
答案 0 :(得分:1)
cin >> k;
不会吃换行符。你需要在它之后调用std::getline
来使用换行符。
如果你在循环的第一次迭代中遇到问题,我会假设你的代码高于此值,也不会使用换行符。