2016-04-02 2 views
0

Я использую несколько вызовов getline(cin, string), чтобы получить две строки; однако код пропускает второй вызов и обрабатывает только первый.Использование нескольких вызовов getline для чтения нескольких строк

for (int i = 0; i < 2; ++i) 
{ 
    if (i == 0) 
    { 
     cout << "Please enter string A: " << endl; 
     getline(cin, stringA); 
    } 

    if (i == 1) 
    { 
     cout << "Please enter string B: " << endl; 
     cin.ignore(); 
     getline(cin, stringB); 
    } 
} 

Как это изменить, чтобы обрабатывать несколько вызовов getline()?

enter image description here

ответ

0

Невозможно воспроизвести плохое поведение с кодом данного. Ошибка может быть в другом месте.

Независимо, код может быть намного проще, и это может решить другие проблемы:

cout << "Please enter string A: " << endl; 
getline(cin, stringA); 
cout << "Please enter string B: " << endl; 
cin.ignore(); 
getline(cin, stringB); 

Петля for позволяет устранить дублирование кода, повторяя один и тот же код снова с небольшими различиями в параметрах. Нет дублированного кода, поэтому for здесь ничего не делает.

Не знаете, в чем цель линии cin.ignore(). Он отбросит первый символ второй строки ввода. Если это то, чего ты хочешь, неважно, если нет, передумай.

Смежные вопросы