Цикл завершает цикл до получения ввода, как исправить? - PullRequest
0 голосов
/ 11 ноября 2011
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 для выхода:
ОШИБКА: ни у одного работника нет идентификатора, который вы ввели!
Введите идентификационный номер гражданина работника или введите 0 для выхода:

Интересно, что мой код может завершить цикл в цикле перед тем, как получить ввод для строки j. Как это может быть возможно и что я могу сделать, чтобы это исправить?

1 Ответ

1 голос
/ 11 ноября 2011

cin >> k; не будет есть перевод строки.Вам нужно вызвать std::getline после него, чтобы использовать новую строку.

Если у вас возникла проблема на первой итерации цикла, я бы предположил, что у вас есть код выше этого, который не использует новую строку какхорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...