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

cin.getline переброс через строку - C++

Восстановить пароль Регистрация
 
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
09.07.2012, 16:19     cin.getline переброс через строку #1
Использую функцию cin.getline,но происходит вот такое чуДооО см картинку внизу



Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
char *Names = new char[120];
        char *Familys = new char[120];
        char *Sexs = new char[12];
        char *Statust = new char[100];
        char *Ages = new char[3];
        memset(Names,'\0',120);
        memset(Familys,'\0',120);
        memset(Sexs,'\0',12);
        memset(Statust,'\0',100);
        memset(Ages,'\0',3);
            if (file == NULL)
        {
         cout << "Ошибка при открытие файла,создайте фаил sex.txt в папке с программой" << endl;
         return;
        }
        
       cout << "=============================================================================="<<endl 
            << "                            Заполните поля : \n";
    
       
        
    cout << "Введите ваше имя : ";
    cin.getline(Names,120);
    cout << "Введите вашу фамилию : ";
    cin.get(Names,120);
    cout << "Введите вашь пол : ";
    cin.getline (Sexs,12);
    cout << "Введите вашь статус : ";
    cin.getline(Statust,100);
    cout << "Сколько вам лет ? : ";
    cin.getline(Ages,3);
Миниатюры
cin.getline переброс через строку  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2012, 16:19     cin.getline переброс через строку
Посмотрите здесь:

cin И getline C++
C++ getline(cin,a);
C++ cin.getline
C++ cin.getline
C++ cin.getline работает через раз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fooly
 Аватар для Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
09.07.2012, 16:29     cin.getline переброс через строку #2
Возможно нужно писать пустой cin.get()
т.е
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cout << "Введите ваше имя : ";
    cin.get();
    cin.getline(Names,120);
    cout << "Введите вашу фамилию : ";
    cin.get();
    cin.get(Names,120);
    cout << "Введите вашь пол : ";
    cin.get();
    cin.getline (Sexs,12);
    cout << "Введите вашь статус : ";
    cin.get();
    cin.getline(Statust,100);
    cout << "Сколько вам лет ? : ";
    cin.get();
    cin.getline(Ages,3);
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.07.2012, 16:31     cin.getline переброс через строку #3
Цитата Сообщение от Fooly Посмотреть сообщение
Возможно нужно писать пустой cin.get()
Надо очищать поток, там остается символ перевода строки.
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
09.07.2012, 16:36  [ТС]     cin.getline переброс через строку #4
Fooly
cin.get() не помог


soon
Спасибо,за инфу,юзнул cin.sync(); помогло
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.07.2012, 16:37     cin.getline переброс через строку #5
Цитата Сообщение от xADMIRALx Посмотреть сообщение
Спасибо,за инфу,юзнул cin.sync(); помогло
А можно использовать std::getline вместо std::basic_istream::get, и не понадобится чистить.
Fooly
 Аватар для Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
09.07.2012, 16:39     cin.getline переброс через строку #6
Цитата Сообщение от xADMIRALx Посмотреть сообщение
Fooly
cin.get() не помог


soon
Спасибо,за инфу,юзнул cin.sync(); помогло
А куда вставлять нужно cin.sync() для правильной работы?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.07.2012, 16:40     cin.getline переброс через строку #7
Цитата Сообщение от Fooly Посмотреть сообщение
А куда вставлять нужно cin.sync() для правильной работы?
После ввода.
http://en.cppreference.com/w/cpp/io/...istream/ignore
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.07.2012, 17:55     cin.getline переброс через строку #8
Цитата Сообщение от Fooly Посмотреть сообщение
А куда вставлять нужно cin.sync() для правильной работы?
cin.sync() не советуют использовать.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.07.2012, 17:57     cin.getline переброс через строку #9
Цитата Сообщение от alsav22 Посмотреть сообщение
cin.sync() не советуют использовать.
Там не sync нужен, а ignore.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.07.2012, 18:01     cin.getline переброс через строку #10
Цитата Сообщение от xADMIRALx Посмотреть сообщение
cin.get() не помог
Как так не помог? Вставить после 26 строки (одни раз) и всё заработает. После cin.getline() не нужно cin.get() вставлять, getline() извлекает из потока символ новой строки.
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
09.07.2012, 20:05  [ТС]     cin.getline переброс через строку #11
Спасибо ребят,выручили
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
09.07.2012, 20:32     cin.getline переброс через строку #12
Цитата Сообщение от xADMIRALx Посмотреть сообщение
Спасибо ребят,выручили
Не надо благодарностей
C++
1
2
3
4
5
6
7
8
9
10
11
12
cout << "Введите ваше имя : ";
cin.getline(Names,120);
cout << "Введите вашу фамилию : ";
cin.getline(Familys,120);
cout << "Введите вашь пол : ";
cin.getline (Sexs,12);
cout << "Введите вашь статус : ";
cin.getline(Statust,100);
cout << "Сколько вам лет ? : ";
cin.getline(Ages,3);
 
cout<<Names<<"\n"<<Familys<<"\n"<<Sexs<<"\n"<<Statust<<"\n"<<Ages<<endl;
Вроде работает, надо было только cin.get(Names,120); исправить
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
09.07.2012, 20:38     cin.getline переброс через строку #13
/////////////
Миниатюры
cin.getline переброс через строку  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2012, 20:41     cin.getline переброс через строку
Еще ссылки по теме:

C++ cin.getline() не читает строку
cin.getline() C++
getline(cin, ); C++

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

Или воспользуйтесь поиском по форуму:
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
09.07.2012, 20:41     cin.getline переброс через строку #14
Цитата Сообщение от yuron_477 Посмотреть сообщение
Не надо благодарностей
Сорри, я думал это первое сообщение
Yandex
Объявления
09.07.2012, 20:41     cin.getline переброс через строку
Ответ Создать тему
Опции темы

Текущее время: 20:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru