Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
5ere2hik
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 3
#1

Функция getline - C++

05.09.2013, 17:42. Просмотров 1034. Ответов 5
Метки нет (Все метки)

Делаю упражнение по С++ (консольное приложение). Необходимо считать строку, включая пробелы. Вот описание класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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():
C++
1
2
3
4
5
6
7
8
int main()
{
    employee base[100];
 
    base[0].getdata();
    base[1].getdata();
    base[2].getdata(); 
}
Результат выполнения такой:
Код
Enter number: 12345
Enter name: Enter number:
Почему пропускается ввод имени? что я делаю не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2013, 17:42     Функция getline
Посмотрите здесь:

Функция С++ getline() - C++
Здравствуйте! Скажите пожалуйста, каков смысл функции cin.getline(). Если не сложно,приведите пожалуйста пример.

Функция getline - C++
Добрый вечер. Очень долго пытался найти в чём проблема в работе программы-она выдавала немного не то значение,которые было необходимо.Ни...

Функция cin.getline() - C++
Имеется часть кода: void EditName(Account &amp;acc) { delete acc.name; char nam; cout&lt;&lt;&quot;Введите новое имя: &quot;; ...

Функция getline и ifstream - C++
int main() { int i,c; char filename; char input_line; cout&lt;&lt;&quot;Enter a file name and press ENTER: &quot;; cin.getline(filename,80);...

Не выполняется функция getline() - C++
Добрый вечер, уважаемые программисты! Написал программу, содержащую класс, который имеет два поля: номер и имя, и два метода: ввод и...

функция getline() в dev_C++ - C++
Помогите пожалуйста, не могу разобраться с функцией getline() Пишу на dev_C++ и не понемаю смысл работы функции. Она читает, пока не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
05.09.2013, 17:48     Функция getline #2
Цитата Сообщение от 5ere2hik Посмотреть сообщение
Почему пропускается ввод имени?
Потому что в потоке остался символ после ввода числа
5ere2hik
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 3
05.09.2013, 17:50  [ТС]     Функция getline #3
Цитата Сообщение от Croessmah Посмотреть сообщение
в потоке остался символ после ввода числа
Этого как-то можно избежать?
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
05.09.2013, 17:54     Функция getline #4
крайне ненадежная штука:
C++
1
(cin >> numb).get();
5ere2hik
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 3
05.09.2013, 17:59  [ТС]     Функция getline #5
Работает, спасибо!

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
крайне ненадежная штука
А почему ненадежная?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2013, 09:30     Функция getline
Еще ссылки по теме:

Не работает функция getline(); - C++
Помогите, после ввода в переменную int c не выполняется функция getline, программа ее просто пропускает. #include &lt;iostream&gt; using...

Не работает функция getline ! - C++
Здравствуйте, помогите, если можете. Не корректно работает функция getline ! Я облазил google, нашел много похожих постов, но...

Функция getline в условии while - C++
Здравствуйте! Перевожу код с c++ на c#. Но возникла проблема с условием цикла while while(getline(cin,S)) {...} Почитал в...

Функция getline(cin,slovo) - C++
Программисты! Подскажите, если не трудно, в строке: getline(cin, slovo); Какую роль играет cin ? slovo - это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
rublag
52 / 52 / 4
Регистрация: 06.02.2013
Сообщений: 156
06.09.2013, 09:30     Функция getline #6
Цитата Сообщение от 5ere2hik Посмотреть сообщение
Работает, спасибо!

Не по теме:

А почему ненадежная?

Потому, что если пользователь введёт больше одного дополнительного символа, то будет то же самое
Код
Enter number: 1 
Enter name: Enter number:
здесь я ввёл "1 \n"; .get() взял один символ(пробел) из stdin, а перенос строки("\n") остался.
Yandex
Объявления
06.09.2013, 09:30     Функция getline
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru