Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: проблемы с getline  (Прочитано 784 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Scot_Tenorman

  • Автор темы
  • Любитель
  • *
  • Сообщений: 74
    • Просмотр профиля
проблемы с getline
« : 21 Января 2012, 00:36:28 »
#include <iostream>
#include <string>
using namespace std;
class employee
{
long nomer;
string name;
public:
void getdata()
{
cout << "Введите имя сотрудника: ";
getline (cin,name);
cout << "Введите номер сотрудника: ";cin>>nomer;
}
void putdata()
{
cout<<"Cотрудник - "<<name<<"  "<<nomer<<endl;
}
};
int main()
{
    employee t1[100];char y; int n=0;
    cout<<"Хотите ввести данные о сотруднике(y/n)?: ";cin>>y;
    while(y=='y')
    {
t1[n].getdata();n++;
cout<<"Хотите ввести данные о сотруднике(y/n)?: ";cin>>y;
 }
for (int i=0;i<n;i++)
 t1[i].putdata();
return 0;
}
Не могу ввести поле name. Ввод игрнорирется и сразу просят ввести переменную поле nomer. Как решить проблему с getline()?

andrey_p

  • Гость
Re: проблемы с getline
« Ответ #1 : 21 Января 2012, 07:54:33 »
Вместо getline используй
cin >> name;Проблема в буферизации. Подробностей не знаю.

Оффлайн Scot_Tenorman

  • Автор темы
  • Любитель
  • *
  • Сообщений: 74
    • Просмотр профиля
Re: проблемы с getline
« Ответ #2 : 06 Февраля 2012, 14:54:59 »
Проблема в принципе ясна. cin засасывает переменную y. Поэтому возникают проблемы с вводом. Как очистить cin перед вводом объекта?

Пользователь решил продолжить мысль 06 Февраля 2012, 15:11:50:
Проблема в принципе ясна. cin засасывает переменную y. Поэтому возникают проблемы с вводом. Как очистить cin перед вводом объекта?
Вроде как мои проблемы решает срока на подобие
cin.ignore(1000,'\n');
« Последнее редактирование: 06 Февраля 2012, 15:11:50 от Scot_Tenorman »

 

Страница сгенерирована за 0.112 секунд. Запросов: 25.