Почему первый символ пропускается во 2-х итерациях и далее - PullRequest
0 голосов
/ 14 января 2019

Кодовая часть:

 int t; 
    cout<<"Enter a no."; 
    cin>>t;

    while(t--){
    cout<<"Enter a string :"<<endl;

    string str;
    cin.ignore();

    getline(cin,str);
    cout<<"You entered :"<<str<<endl<<endl;
}

выход

Enter a no. 3
Enter a string :
It is working
You entered :It is working

Enter a string :
It is working
You entered :t is working

Enter a string :
It is working 
You entered :t is working

Почему первый символ пропускается во 2-х итерациях и далее. Любая помощь будет приветствоваться.

1 Ответ

0 голосов
/ 14 января 2019

cin>>t; читает число от пользователя. Поскольку пользователь должен нажать ввод после числа, вам нужно cin.ignore(), чтобы игнорировать символ новой строки. Однако в цикле вы используете getline, который читает всю строку. Нечего игнорировать, так как вы прочитали всю строку. Поэтому вам нужно переместить cin.ignore() в до цикла.

Лично я предпочитаю всегда читать строки от пользователя, поскольку я ожидаю, что пользователь введет.

...