循环在输入之前完成一个循环,如何修复?

时间:2011-11-10 21:34:12

标签: c++ debugging visual-c++ while-loop

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的输入之前完成循环中的循环。这怎么可能,我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:1)

cin >> k;不会吃换行符。你需要在它之后调用std::getline来使用换行符。

如果你在循环的第一次迭代中遇到问题,我会假设你的代码高于此值,也不会使用换行符。