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

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

Войти
Регистрация
Восстановить пароль
 
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
#1

Вопрос про cin.getline() - C++

11.08.2011, 00:12. Просмотров 960. Ответов 9
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
        char mas[20];
        cout<<"Add Age  ";
        cin>>Age;
 
        cout<<"Add Name  ";
        cin.getline(mas,20);
        Name = new char[strlen(mas)+1];
        strcpy(Name, mas);
 
        cout<<"Add University  ";
        cin.getline(mas,20);
        University = new char[strlen(mas)+1];
        strcpy(University, mas2);
Почему проскакивает ввод имени и сразу вводится University?

 Комментарий модератора 
Сообщения не выделяем, кому надо - тот и так прочитает, кому не надо - и так не станет читать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2011, 00:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вопрос про cin.getline() (C++):

Опять про cin.getline и невызов - C++
я знаю, что вопрос много раз поднимался, но везде ссылки или описания типа делай так и все - это я читал... Вот фрагмент кода: ...

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода - C++
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами - C++
Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get и cin.getline с тремя параметрами, как из потока достать...

два вопроса по С++,вопрос про заг.файла и поток cin - C++
1.У меня есть заголовoчный файл,созданный в проекте А,в проекте В он нужен,как его туда добавить?Надо самим файл из папку в папку...

Отличие функции cin.get и cin.getline - C++
Добрый день! Изучаю функции get и getline, сказано, что они отличаются тем, что функция get считывает символ разрыва строк и оставляет...

Отличие getline() от cin.getline() - C++
Чем отличается getline() от cin.getline() ?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
11.08.2011, 00:20 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        int Age;
    char mas[20];
    cout<<"Add Age  ";
    cin>>Age;
    cin.ignore();//должно помочь
    
        cout<<"Add Name  ";
    cin.getline(mas,20);
    char* Name = new char[strlen(mas)+1];
    strcpy(Name, mas);
    
    cout<<"Add University  ";
    cin.getline(mas,20);
    char *University = new char[strlen(mas)+1];
    strcpy(University, mas2);
C++
1
strcpy(University, mas2);
кстати почему здесь mas2? по идеи должно быть просто mas.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
11.08.2011, 00:29  [ТС] #3
Цитата Сообщение от silentnuke Посмотреть сообщение

кстати почему здесь mas2? по идеи должно быть просто mas.
Да это там я одну вещь удалял, тут забыл убрат 2 щас уберу, ну проблема не в этом.

Добавлено через 2 минуты
Цитата Сообщение от silentnuke Посмотреть сообщение
cin.ignore();//должно помочь
Не помогло.
Сыроежка
Заблокирован
11.08.2011, 00:34 #4
Цитата Сообщение от silentnuke Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        int Age;
    char mas[20];
    cout<<"Add Age  ";
    cin>>Age;
    cin.ignore();//должно помочь
    
        cout<<"Add Name  ";
    cin.getline(mas,20);
    char* Name = new char[strlen(mas)+1];
    strcpy(Name, mas);
    
    cout<<"Add University  ";
    cin.getline(mas,20);
    char *University = new char[strlen(mas)+1];
    strcpy(University, mas2);
C++
1
strcpy(University, mas2);
кстати почему здесь mas2? по идеи должно быть просто mas.
Как уже здесь было отмечено, проблема в том, что после воода возраста, то есть переменной Age в буфере сохранился символ конца строки. Когда вы вызываете функцию getline она считывает этот символ конца строки.

Вам лучше чем-то одним пользоваться: либо вводить все через getline, либо напрямую с помощью оператора >>.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
11.08.2011, 00:44  [ТС] #5
тоесть хочешь сказать что лучше тогда использовать cin>>mas ?
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
11.08.2011, 00:47 #6
Цитата Сообщение от Ree.exe Посмотреть сообщение
тоесть хочешь сказать что лучше тогда использовать cin>>mas ?
если в строке нет пробелов, то да.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
11.08.2011, 00:48  [ТС] #7
Да в строке нет пробелов.
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
11.08.2011, 00:53 #8
тогда всмело можно использовать.
кстати попробуйте вместо cin.ingore() использовать _flushall(), может это поможет.
просто у себя проверил, оба вариант срабатывают.
Сыроежка
Заблокирован
11.08.2011, 00:56 #9
Цитата Сообщение от Ree.exe Посмотреть сообщение
тоесть хочешь сказать что лучше тогда использовать cin>>mas ?
Хочу сказать, что лучше чем-то одним пользоваться. Можно для ввода Age также использовать getline, а затем с помощью функции atoi переводить данные в число. Либо пользоваться только оператором >> при условии, что в mas должно ввестись одно слово без пробелов.
IrineK
Заблокирован
11.08.2011, 12:00 #10
Попробуйте не cin.ignore(), а cin.sync().
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2011, 12:00
Привет! Вот еще темы с ответами:

cin.getline и cin.ignore - C++
Есть кусок кода в котором не могу разобраться. Если cin.ignore() есть, то теряется первый вводимый символ начиная со второго входа в for....

Cin вместо cin.getline - C++
#include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;fstream&gt; using namespace std; int get_int(int default_value); char name; ...

getline(cin, str) и cin>> - C++
Добрый день. Есть код: ... string str; int N; cin&gt;&gt; N; getline(cin, str); cout&lt;&lt;str&lt;&lt;endl; //Выводит: &lt;пустота&gt; ...

Не работает ни cin.Get(), ни cin.Getline() - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;windows.h&quot; #include &quot;string.h&quot; using namespace::std; const...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.08.2011, 12:00
Ответ Создать тему
Опции темы

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