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

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

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

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

11.08.2011, 00:12. Просмотров 959. Ответов 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()
Посмотрите здесь:

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

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

cin.getline() не выполняется - C++
В коде ниже не выполняется cin.getline(), просто пропускает и начинает выполнять следующую строку (0.png то что получается). form z; //...

Проблема с cin.getline(); - C++
Есть вопрос по поводу использования cin.getline() после cin: cin&gt;&gt; n; char c; cin.getline(c, buf); Почему можно ввести...

Setlocal и cin.getline - C++
Привет Всем! У меня такая задачка. В начале программы setlocale(LC_ALL,&quot;rus&quot;) чтоб консоль русские буквы понимала, но по ходу программы мне...

Пропускается cin.getline - C++
Здравствуйте. Функция поиска void search() { char str; int arr_1, arr_2,col_rezult = 0; int on_name = 0; int on_autor =...

cin.getline скушал - C++
Вот ставлю чтоб ввёл 5 строк а даёт только 4, съедает 1 строку самую первую как это починить? char **s = new char* ; for(int i = 0; i...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
11.08.2011, 00:20     Вопрос про cin.getline() #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  [ТС]     Вопрос про cin.getline() #3
Цитата Сообщение от silentnuke Посмотреть сообщение

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

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

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

cin.getline пропуск ввода - C++
Стыдно 3 раз за сегодня обращаться по мелким проблемам, но увы, гугл не помогает. Сама проблема заключается вот в чем. В первом вводе,...

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

Друзья getline и cin.ignore - C++
Постараюсь как можно более точно обрисовать проблему. Имеется string * v1 = new string; string * v2 = new string; string * v3 = new...

Error C2664 в cin.getline() - C++
Всем привет.Пишу телефонную книгу в консоли ,при попытке заполнить поля структуры вылазит ряд ошибок ,типа error C2664:...


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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
11.08.2011, 12:00     Вопрос про cin.getline() #10
Попробуйте не cin.ignore(), а cin.sync().
Yandex
Объявления
11.08.2011, 12:00     Вопрос про cin.getline()
Ответ Создать тему
Опции темы

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