Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2013, 17:03   #1
5ere2hik
Новичок
Джуниор
 
Регистрация: 05.09.2013
Сообщений: 2
По умолчанию Проблема с функцией getline

Делаю упражнение по С++ (консольное приложение). Необходимо считать строку, включая пробелы. Вот описание класса:
Код:
class employee
{
private:
    string name;
    long numb;

public:
    employee()
    {}

    employee(string s, long n ): name(s), numb(n)
    {}

    void getdata()
    {
        cout << "Enter number: ";
        cin >> numb;
        cout << "Enter name: ";
        getline(cin, name);
    }

};
В мэйне несколько раз вызываю метод getdata():

Код:
int main()
{
    employee base[100];

    base[0].getdata();
    base[1].getdata();
    base[2].getdata(); 
}
Результат выполнения такой:

Код:
Enter number: 12345
Enter name: Enter number:
Почему пропускается ввод имени? что я делаю не так?
5ere2hik вне форума Ответить с цитированием
Старый 05.09.2013, 18:09   #2
5ere2hik
Новичок
Джуниор
 
Регистрация: 05.09.2013
Сообщений: 2
По умолчанию

Решено.

Код:
cin >> numb;
можно заменить на
Код:
(cin >> numb).get();
5ere2hik вне форума Ответить с цитированием
Старый 05.09.2013, 18:11   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нескромный вопрос: Зачем мешать cin и getline()?
По-теме: Видимо нажатие Энтер остается в буфере. Буфер после ввода пробуй очистить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.09.2013, 18:16   #4
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

В cin уже присутствуют данные '\n'. Оператор >> перестает считывать символы, если встречается символ-разделитель. Далее происходит выполнение getline(std::istream, string) и прекращается т.к оператор >> должен читать string из cin, а в cin уже находится '\n'. Нужно очищать буфер
Igor95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с функцией Voldemort93 PHP 1 24.08.2013 21:49
Считывание строк из файла функцией getline() julia9311 Помощь студентам 0 14.12.2012 00:50
проблема с функцией Си blain Помощь студентам 1 19.02.2012 21:06
проблема с функцией saix Общие вопросы C/C++ 14 28.10.2010 19:07
Проблема с функцией cin.getline. Подскажите советом. (*_*) Общие вопросы C/C++ 3 04.03.2009 22:43