Re[3]: getline() чудит
От: DukeNukem3D Россия  
Дата: 19.05.08 10:27
Оценка:
Здравствуйте, DukeNukem3D, Вы писали:

DND>Здравствуйте, Кодт, Вы писали:


К>>Нет, ты неправильно используешь чтение y/n.

К>>Дело в том, что
К>>
К>>cout >> "yes or no? ";
К>>cin << c;
К>>getline(cin, s, '\n');
К>>

К>>Отрабатывает следующим образом:
К>>1) выводится просьба
К>>2) cin<<c передаёт управление консоли
К>>3) консоль ожидает завершения ввода (для неё это символы LF или EOF)
К>>4) ты вводишь 'Y' и LF (чтобы завершить ожидание)
К>>5) консоль возвращает управление
К>>6) cin<<c читает первый символ ('Y'), в буфере остаётся LF
К>>7) getline() читает строку до LF включительно — что, собственно, ты и наблюдаешь.

К>>Необходимо после чтения однобуквенного ответа очищать буфер до конца строки.


DND>Хорошо, а как очистить буфер?


Порылся в доках, сделал так:

cout << "Enter Name of the employeer" << endl;
getline(cin, sName);
cout << "Wanna enter more? (y/n) >";
cin >> cCheck;
cin.sync();

ведет себя также:


Enter Name of the employeer
a
Wanna enter more? (y/n) >y
Enter Name of the employeer
Wanna enter more? (y/n) >y
Enter Name of the employeer
Wanna enter more? (y/n) >n
Name                                        a ID 1
Name                                          ID 2
Name                                          ID 3
С уважением, Андрей
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.