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

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

Войти
Регистрация
Восстановить пароль
 
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 770
#1

While срабатывает 2 раза, почему? - C++

19.05.2014, 21:07. Просмотров 376. Ответов 15
Метки нет (Все метки)

Сообственно код

void main() {

while(true){

cout<<"|y|";
_getch();
}

}

нажимаю клавишу, выводит по 2 буквы, почему? как сделать чтобы один раз за цикл выводилось значение?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5122 / 4442 / 1481
Регистрация: 14.04.2014
Сообщений: 17,639
19.05.2014, 21:10     While срабатывает 2 раза, почему? #2
У тебя бесконечный цикл.
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 770
19.05.2014, 21:14  [ТС]     While срабатывает 2 раза, почему? #3
nmcf, я понимаю, но по логке, он выводит 1 букву, я нажимаю кнопку, он выводит снова 1 букву , а в реале после нажатия выводит сразу 2, как так?
nmcf
5122 / 4442 / 1481
Регистрация: 14.04.2014
Сообщений: 17,639
19.05.2014, 21:20     While срабатывает 2 раза, почему? #4
Попробуй _cputs() вместо cout.
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
19.05.2014, 21:23     While срабатывает 2 раза, почему? #5
Про getch советую почитать.
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 770
19.05.2014, 21:25  [ТС]     While срабатывает 2 раза, почему? #6
nmcf, а смысл? вопров другом, cout<<"|y|"; - это для наглядности, на самом деле у меня там куча кода которая по 2 раза вплняется
Тамика, а что с ним не так?
newbie666
Заблокирован
19.05.2014, 21:27     While срабатывает 2 раза, почему? #7
Цитата Сообщение от mh-coder Посмотреть сообщение
он выводит снова 1 букву
а он и выводит по одной букве на одно нажатие клавиши, у тебя просто руки трясутся - вот и щёлкаешь несколько раз по клавише
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 770
19.05.2014, 21:29  [ТС]     While срабатывает 2 раза, почему? #8
я тут заметил, если нажимаю например стрелочку, то 2 раза страбатывает, если букву то 1, как сделать чтобы при нажатии на стрелочку цыкл 1 раз срабатывал?
nmcf
5122 / 4442 / 1481
Регистрация: 14.04.2014
Сообщений: 17,639
19.05.2014, 21:39     While срабатывает 2 раза, почему? #9
Для таких клавиш первый байт должен быть ноль. Вот по нему и ориентируйся. Если ноль, то делай второй getch().
newbie666
Заблокирован
19.05.2014, 21:40     While срабатывает 2 раза, почему? #10
Цитата Сообщение от mh-coder Посмотреть сообщение
я тут заметил
дело в том, что:
getch () function returns two keycodes for arrow keys (and some other special keys)
то есть если ты нажимаешь специфическую виртуальную кнопку, функция по очереди возвращает два кода кнопки, для этого её два раза вызывать нужно - вот и две буквы вылезают у тебя в консоле.
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 770
19.05.2014, 21:41  [ТС]     While срабатывает 2 раза, почему? #11
а как сделать чтобы 1 была, вторая?
newbie666
Заблокирован
19.05.2014, 21:43     While срабатывает 2 раза, почему? #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от nmcf Посмотреть сообщение
Для таких клавиш первый байт должен быть ноль
не только ноль, но и 0xE0 - тоже учитывать надо....
Правда не понятно, что ваще ТС хочет сделать ....

Добавлено через 1 минуту
Цитата Сообщение от mh-coder Посмотреть сообщение
а как сделать чтобы 1 была?
C++
1
2
3
4
5
6
7
    while(true){
 
        cout<<"|y|";
        int ch = _getch();
        if (ch == 0 || ch == 224)
            _getch();       
    }
nmcf
5122 / 4442 / 1481
Регистрация: 14.04.2014
Сообщений: 17,639
19.05.2014, 21:46     While срабатывает 2 раза, почему? #13
Я подумал, что 0xE0 для getwch().
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 770
19.05.2014, 21:57  [ТС]     While срабатывает 2 раза, почему? #14
newbie666, клас, спс, то что нужно, а можешь только обьяснить как оно раотает? почеу цикл по 1 разу выводит букву и почему я ввожу клавишу 1 раз и результат нормальный могу взять из второго _getch()??
newbie666
Заблокирован
19.05.2014, 22:20     While срабатывает 2 раза, почему? #15
Цитата Сообщение от mh-coder Посмотреть сообщение
почеу цикл по 1 разу выводит букву
ну потому что там проверка есть, если сложна кнопка нажата, результат нажатия которой нужно выдаивать из гетчара два раза - то и вызывается второй вызов гетчара, что "подоить" поток ввода и вытащить оттуда всё. Иначе, при повторном заходе в вайл у юзера не спросят ввести символ, т
Цитата Сообщение от mh-coder Посмотреть сообщение
почему я ввожу клавишу 1 раз и результат нормальный могу взять из второго _getch()??
.к. в потоке остался одни символ от сложной кнопки и гетчар сразу вернёт остаток без всяких пауз.
ну потому что у составной клавиши сложной сам код как раз и идёт вторым байтом в тотоке
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2014, 22:25     While срабатывает 2 раза, почему?
Еще ссылки по теме:
C++ Почему не срабатывает конструктор копирования в пользовательском классе
C++ Непонятно почему каждый раз срабатывает исключение
C++ Не срабатывает условие в цикле while не могу понять почему
Почему не срабатывает услоивие ни в одну ни в другую сторону C++
Почему деструктор вызывается два раза C++

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

Или воспользуйтесь поиском по форуму:
UnsKneD
алкокодер
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
19.05.2014, 22:25     While срабатывает 2 раза, почему? #16
mh-coder, почитайте про отлавливание нажатий, про хуки(Hooks).
Yandex
Объявления
19.05.2014, 22:25     While срабатывает 2 раза, почему?
Ответ Создать тему
Опции темы

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