24.7.07

Проблема с getline() в c++

Может быть кому-то покажется неактуальным, но проблема очень часто возникает у новичков:
При передаче значений нескольким переменным через getline(cin, ) бывает получается, что во время выполнения программы одна из инструкций пропускается.
Пример:
int id;
string name, title, huitle;

cout<<"Введите код"; cin>>id;
cout<<"Введите имя"; getline(cin,name); cout<<"Введите название";
getline(title,name);
cout<<"Введите охуевание"; getline(cin,huitle);
При запуске данного кода может произойти (а может и не произойти, скорее всего зависит от компилятора) так, что после введения id появится приглашение ввести name, но не даст возможности ввести значение выводя на экран следующее приглашение для ввода.
Дык вот. Чтобы избежать подобной херни советую использовать очистку буфера ввода посредством метода ignore(); и будет Вам счастье.
Пример:
int id;
string name, title, huitle;

cout<<"Введите код";
cin>>id
cin.ignore();
cout<<"Введите имя"; getline(cin, name);


P.S.
Критики молча идут нахуй. Я не претендую на лавры махагуру c++ (я новичек), описал проблему так как её увидел, если есть дополнения или уточнения пишите на мыло losaped@inbox.ru, обязательно добавлю. Очень надеюся, что кому то поможет, а то я на эту херь 20 минут убил.
P.P.S.
Если Вам хоть чуточку получшело от данной заметки то прошу пожамкать на рекламку.

Комментариев нет:

Отправить комментарий