Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2010, 22:41   #1
Subtile
 
Аватар для Subtile
 
Регистрация: 19.05.2009
Сообщений: 6
Вопрос Проблема с вводом через cin.get [С++]

Здравствуйте.
У меня возникла очень странная проблема с cin.get(). Получасовой поиск по форуму не дал результатов. Также как и несколько длительных марш-бросков по гуглу.
cin.get() в моём коде не ждёт ввода. Но лучше по порядку.
Существует структура вот такого вида:
Код:
struct AEROPORT 
{
	char punkt[PUNKTL];
	char flight[FLIGHTL];
	char plane[PUNKTL];
};
И функция, создающая структуру такого типа, и возвращающая её:
Код:
AEROPORT inputZap ()
{
	AEROPORT z;

	cout << "Введите пункт назначения:\n";
	cin.seekg(0L, ios::end);
	cin.get(z.punkt, PUNKTL-1, '\n'); 						// данная функция не ждет ввода


	cout << "\nВвдеите номер рейса:\n";
	cin.seekg(0L, ios::end);
	cin.get(z.flight, FLIGHTL-1, '\n');

	cout << "\nВведите тип самолёта:\n";
	cin.seekg(0L, ios::end);
	cin.get(z.plane, PUNKTL-1, '\n');				// данная функция не ждет ввода

	return z;
}
В z.punkt и z.plane записываются только "\n".
Т.к. с этой проблемой мучаюсь уже долго, пробовал очень странные варианты. Например, если добавить перед неработающим cin.get() ещё один
Код:
cin.seekg(0L, ios::end);
cin.get() срабатывает. Чтобы разобраться самому, явно не хватает знаний. Возникло подозрение, что проблема сугубо компилятора (Visual C++ 2008 Express).
Буду очень рад помощи.
Subtile вне форума Ответить с цитированием
Старый 09.03.2010, 22:56   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

попробуйте перед cin.get() поставить cin.ignore()
NiCola999 вне форума Ответить с цитированием
Старый 09.03.2010, 23:16   #3
Subtile
 
Аватар для Subtile
 
Регистрация: 19.05.2009
Сообщений: 6
По умолчанию

Не помогло. Результат тот же.
Subtile вне форума Ответить с цитированием
Старый 10.03.2010, 11:46   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Код:
#include <iostream.h>

#define PUNKTL  3
#define FLIGHTL 4


struct AEROPORT {
   char punkt[PUNKTL];
   char flight[FLIGHTL];
   char plane[PUNKTL];
};


AEROPORT inputZap() {

   AEROPORT z;

   cout << "Введите пункт назначения: ";
   cin.get( z.punkt, PUNKTL );
   cin.ignore( 80, '\n' );

   cout << "\nВведите номер рейса: ";
   cin.get( z.flight, FLIGHTL );
   cin.ignore( 80, '\n' );

   cout << "\nВведите тип самолёта: ";
   cin.get( z.plane, PUNKTL );

   return z;

}


int main( void ) {

   AEROPORT zFoo = inputZap();
   cout << zFoo.punkt << endl;
   cout << zFoo.flight << endl;
   cout << zFoo.plane << endl;

   return 0;

}
Константа 80 в ignore() взята от фонаря, исключительно "из соображений здравого смысла".
Vago вне форума Ответить с цитированием
Старый 10.03.2010, 16:55   #5
Subtile
 
Аватар для Subtile
 
Регистрация: 19.05.2009
Сообщений: 6
По умолчанию

Vago, спасибо! Помогло.
Subtile вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с вводом в c++ Builder ksyst Помощь студентам 2 20.12.2009 18:25
проблема с вводом/выводом revan-8 Общие вопросы C/C++ 10 09.07.2009 20:54
проблема с cin.get Dimarik Общие вопросы C/C++ 9 30.04.2009 23:52
проблема с вводом графа Petruha-nsk Общие вопросы C/C++ 4 10.04.2009 15:51
Проблема с функцией cin.getline. Подскажите советом. (*_*) Общие вопросы C/C++ 3 04.03.2009 22:43