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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.91
cgsg11
9 / 9 / 2
Регистрация: 09.03.2011
Сообщений: 38
#1

Замена getch() - C++

24.06.2011, 15:14. Просмотров 7576. Ответов 27
Метки нет (Все метки)

Здравствуйте. Решил повысить переносимость своего кода и задался вопросом: на что заменить getch? Насколько я понимаю, эта функция откажется работать в юникс-системах и тп.
Хочу добиться эффекта ожидания нажатия любой клавиши. Получение кода клавиши не обязательно. Подчеркну, что функция должна быть в стандарте плюсов и платформонезависимой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2011, 15:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена getch() (C++):

getch - C++
Недавно начал изучать си++. Что-то написал, не знаю по какой причине не компилирует. Прошу помочь. Думаю проблема где-то в 12 строке. ...

getch() - C++
Здравствуйте, форумчане! написал программу, которая должна переводить миллион символов 16-го кода в двоичный, но столкнулся с...

getch() - C++
с помощью функции getch() узнал код клавиш... int n; n = getch(); cout << n;

getch - C++
что озночает ввод синволов с помощю getch без буферизации

getch() error - C++
Привет всем, такое дело, не работает getch()! Вот, что пишет: C:\Users\AKHURS\Desktop\tetris_start.cpp:122: implicit declaration...

ошибка getch() - C++
программа с функцией getch() компилируется адекватно, но пр выполнении выскакивает такое окошко

27
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
24.06.2011, 16:05 #2
C++
1
getchar();
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
24.06.2011, 16:09 #3
а system("pause"); чё там не работает?

Добавлено через 1 минуту
ты кстати не первый кто задался таким вопросом
http://www.google.ru/search?sclient=...aqi=&aql=f&oq=
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
24.06.2011, 16:11 #4
C++
1
std::cin.get();
0
cgsg11
9 / 9 / 2
Регистрация: 09.03.2011
Сообщений: 38
24.06.2011, 16:13  [ТС] #5
Люди, оч смешно. я сказал же, нажатие ЛЮБОЙ клавиши. а оба ваши варианта работают до нажатия ентера. так-то и я могу. )
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
24.06.2011, 16:17 #6
на первой же ссылке очень подробно обсуждается как обойти "эффект ожидания ентера", поиском научись пользоваться, думаешь ты первый кто задал этот вопрос?
http://forum.shelek.ru/index.php/topic,9792.0.html
0
cgsg11
9 / 9 / 2
Регистрация: 09.03.2011
Сообщений: 38
24.06.2011, 16:36  [ТС] #7
Я посмотрел твою ссылку на какой-то там форум... <curses.h> не входит в стандарт плюсов, вот что плохо.
0
voral
455 / 436 / 68
Регистрация: 16.03.2008
Сообщений: 2,130
24.06.2011, 16:36 #8
http://forum.shelek.ru/index.php/top...html#msg139308
0
cgsg11
9 / 9 / 2
Регистрация: 09.03.2011
Сообщений: 38
24.06.2011, 16:40  [ТС] #9
Не пойму, вы даете одну и ту же ссылку. Говорю еще раз, я хочу, чтоб прога соответствовала стандарту плюсов! А юникс\линукс - не самоцель!
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
24.06.2011, 16:46 #10
ну видимо нету того чего ты хочешь в "стандарте плюсов". Тогда ncurses надо использовать
0
cgsg11
9 / 9 / 2
Регистрация: 09.03.2011
Сообщений: 38
24.06.2011, 16:57  [ТС] #11
Ну нет, значит нет. Значит - забьем.
Получается, если захочется писать действительно стандартный код, работающий и там, и там, придется юзать функцию system, но позаботиться обособлением ее директивами проверки системосовместимости.
0
Nameless One
Эксперт С++
5774 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
24.06.2011, 17:30 #12
Цитата Сообщение от pito211 Посмотреть сообщение
а system("pause"); чё там не работает?
system-то работает, а вот pause нету...
0
cgsg11
9 / 9 / 2
Регистрация: 09.03.2011
Сообщений: 38
24.06.2011, 17:35  [ТС] #13
Совсем нету? без всяких аналогов?

а то предлагал написать типа:
C++
1
2
3
4
5
6
#ifdef _WINDOWS
system("pause");
#endif
#ifdef <чо то там для юниксов>
system(<специфичное для юникса>);
#endif
за точность кода не ручаюсь, но смысл понятен.
Там действительно ничего, что могло бы быть во втором вызове?
0
Nameless One
Эксперт С++
5774 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
24.06.2011, 17:38 #14
http://www.cyberforum.ru/cpp-linux/t...ead139606.html - вроде есть несколько решений
0
cgsg11
9 / 9 / 2
Регистрация: 09.03.2011
Сообщений: 38
24.06.2011, 17:51  [ТС] #15
Посмотрел. Все то же самое. Файлы заголовков не из стандарта, единственный недостаток. А я хотел бы пользоваться исключительно стандартом.
К какой мысли веду: может быть можно как-то добиться этого эффекта коммандами самого терминала? тогда их можно было бы завалять в system и наслаждаться жизнью... (ну, в смысле как в коде выше).

Пс. Рвение пользоваться стандартом - исключительно муки совести, но она (совесть) вполне позволяет такое использование system'а. )
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2011, 17:51
Привет! Вот еще темы с ответами:

аналог getch() - C++
Ребят getch меня не устраивает следующим: когда окно теряет фокус он не работает. как выйти из ситуации?

Функция getch() - C++
Здравствуйте! Проблема следующая: в программе для получения значений от пользователя я использовал функцию getch(), вызов этой функции в...

getch(), char *name; - C++
Привет всем, у меня опять вопрос, задается тип данных например char name; это понятно но для чего там ставится знак * char* name; И...

getch и коды - C++
здравствуйте господа програмисты!как сделать что бы при нажатии клавиши &quot;w&quot; выскакивало надпись привет народ,но только при нажатии именно...


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

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

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