Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь проблемы с cin.getline, Проблемы при использовании cin.getline  
V
    Опции темы
kresh
Дата 26.1.2008, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 1.1.2008
Где: Минск

Репутация: нет
Всего: нет



Не пойму в чем дело использую два подряд   cin.getline, причем если при первом использовании  cin.getline ввожу символов больше заданного программа перепрыгивает через второй  cin.getline и считает что я там ничего не ввел
Код

char Game()

  char g1[6],g2[6];
  SumGuessg1=0;
  SumGuessg2=0;
     int x;
        
        for(x=0;x<2;x++){    

         if(x==0){strcpy(g1,name_gamer1),strcpy(g2,name_gamer2);}else {strcpy(g1,name_gamer2),strcpy(g2,name_gamer1);}
    cout<<endl<<Rus("")<<g1;

cin.sync();//ОЧИСТКА БУФЕРА

cout<<Rus("-загадывает 10 символов=  "); 
 cin.sync();//ОЧИСТКА БУФЕРА   
        cin.getline(txt, 11);
         cin.sync();//ОЧИСТКА БУФЕРА 
        cout<<endl<<Rus("")<<g2;
cout<<Rus("\n-угадывает 10 символов="); 

        cin.sync();//ОЧИСТКА БУФЕРА
        cin.getline(txt2,11);

//сравнение введенных символов///////////////////////////////////////////////////////////
        
        
        for (int i=0;i<10;i++){
            if (txt[i]!=txt2[i])continue;else {if (x==0)SumGuessg1++;else SumGuessg2++;}}
             
//////////////////////////////////////////////////////////////////////////////////////////
        cout<<endl<<Rus("---------------------Текущий счет----------------------------------");

        
cout<<                  "\n"<<name_gamer1<<"="<<SumGuessg1;

cout<<                  "\n"<<name_gamer2<<"="<<SumGuessg2;}
        

return 0;}

--------------------
Спросит вас продавец в магазине формулу Гаусса-Остроградского... А вы ее не знаете!
PM MAIL   Вверх
archimed7592
Дата 26.1.2008, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Здесь была похожая проблема: http://forum.vingrad.ru/index.php?show_typ...07&view=all


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 26.1.2008, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



kresh, видишь ли, пользователь вводит данные так, как он хочет, необязательно пооператорно. То есть один "физический" ввод пользователя может растянуться на бесконечное множество операторов ввода в твоей программе. Поэтому дай пользователю волю, при этом константы ввода сделав просто побольше - порядка 64-256.

Добавлено через 2 минуты и 43 секунды
Фчёрт, сам решил и сам забыл :(. Попробуй, как замечено по ссылке archimed7592а, 
Код

cin.ignore();




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
kresh
Дата 26.1.2008, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 1.1.2008
Где: Минск

Репутация: нет
Всего: нет



Спасибо за ответы,решил проблему используя  

cin.clear();// очистить ошибочное состояние потока

Код

char Game()

  char g1[6],g2[6];
  SumGuessg1=0;
  SumGuessg2=0;
     int x;
        
        for(x=0;x<2;x++){    

         if(x==0){strcpy(g1,name_gamer1),strcpy(g2,name_gamer2);}else {strcpy(g1,name_gamer2),strcpy(g2,name_gamer1);}
    cout<<endl<<Rus("")<<g1;

cin.sync();//ОЧИСТКА БУФЕРА

cout<<Rus("-загадывает 10 символов=  "); 
 cin.sync();//ОЧИСТКА БУФЕРА   
        cin.getline(txt, 11);
         cin.sync();//ОЧИСТКА БУФЕРА +
         cin.clear();// очистить ошибочное состояние потока
        cout<<endl<<Rus("")<<g2;
cout<<Rus("\n-угадывает 10 символов="); 

        cin.sync();//ОЧИСТКА БУФЕРА
        cin.getline(txt2,11);
        cin.clear();// очистить ошибочное состояние потока
//сравнение введенных символов///////////////////////////////////////////////////////////
        
        
        for (int i=0;i<10;i++){
            if (txt[i]!=txt2[i])continue;else {if (x==0)SumGuessg1++;else SumGuessg2++;}}
             
//////////////////////////////////////////////////////////////////////////////////////////
        cout<<endl<<Rus("---------------------Текущий счет----------------------------------");

        
cout<<                  "\n"<<name_gamer1<<"="<<SumGuessg1;

cout<<                  "\n"<<name_gamer2<<"="<<SumGuessg2;}
        

return 0;}




 smile 
--------------------
Спросит вас продавец в магазине формулу Гаусса-Остроградского... А вы ее не знаете!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0666 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.