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

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

Войти
Регистрация
Восстановить пароль
 
danghyan
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 19
#1

как проверить нажатие "Enter" - C++

18.02.2014, 15:13. Просмотров 1017. Ответов 10
Метки нет (Все метки)

Пользователь вводит поочередно значения какие то, хочу что бы при нажатии "Enter" цикл вырубался и программа работала дальше.
Получить VK_RETURN через windows.h не получится, тк пишу на xcode(mac). как подключить библиотеку не нашел, да и думаю есть способы полегче.
getchar не получается, тк пользователь может ввести ansii значение этого символа цифрами и программа остановится(как я понимаю). Как быть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 15:13     как проверить нажатие "Enter"
Посмотрите здесь:

Решить пример, в котором цифры заменены буквами: "enter + enter = абзац" - C++
ENTER + ENTER = АБЗАЦ В этом примере на сложение каждая из цифр от нуля до девяти заменена соответствующей буквой. Попробуйте найти...

трактовка Enter как "\n" - C++
Вообщем ситуация такая: после построения приложения в Visual Studio, компилятор после каждого моего нажатия по ентеру посылает меня на...

Проверить, встрачается ли в заданном тексте буква "а" чаще, чем буква "b" - C++
задача: Напечатать true, если в заданном тексте буква "а" встречается чаще чем буква "b", и напечатать false в противном случае. Помогите...

Выполнять "пока" не нажат Enter - C++
while (i != Ентер ){ //тело } Что должно быть вместо "Ентер"?

Проверить, есть ли в слове приставка "пре" или "пре". - C++
Помогите решить задачу! Проверить, есть ли в слове приставка "пре" или "пре". Заранее благодарен!

Имитировать нажатие клавиш (программа для "макросов" в игре) - C++
Здравствуйте, хочу сделать программу которая по нажатию одной клавиши имитирует нажатие других. Всё это происходит в онлайн игре поэтому...

Как сделать execl("my", "arg", argv)? - C++
Пытаюсь сделать программу под linux. Нужен такой код, который бы запускал execl с двумя моими параметрами и всеми параметрами из argv кроме...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
18.02.2014, 15:22     как проверить нажатие "Enter" #2
А как ты вообще читаешь значения?
Посимвольно?
Тогда просто
C++
1
2
char c = ' ';
while(c != 13){...}
Если читаешь строками, то для ввода их надо нажимать enter в любом случае.
И таки, интересно мне, как можно набрав "13", заставить программу случайно понять это как символ ввода, если подобное поведение не является частью обработки ввода?
danghyan
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 19
18.02.2014, 15:31  [ТС]     как проверить нажатие "Enter" #3
Цитата Сообщение от Бендерродригез Посмотреть сообщение
А как ты вообще читаешь значения?
Посимвольно?
Тогда просто
C++
1
2
char c = ' ';
while(c != 13){...}
Если читаешь строками, то для ввода их надо нажимать enter в любом случае.
И таки, интересно мне, как можно набрав "13", заставить программу случайно понять это как символ ввода, если подобное поведение не является частью обработки ввода?
Нет не строками, все значения интовые.

C++
1
2
3
4
...
c=getchar()
if(c==13)
...
Если пользователь собирается вводить 13 в программу или если он нажмет "Enter"... Ведь в любом случае с=13 и выполняется if, не так ли?
SatanaXIII
Супер-модератор
Эксперт С++
5591 / 2625 / 239
Регистрация: 01.11.2011
Сообщений: 6,455
Завершенные тесты: 1
18.02.2014, 15:57     как проверить нажатие "Enter" #4
Цитата Сообщение от danghyan Посмотреть сообщение
не так ли?
Неа. В char влезает только один символ. Пользователь вводит 13 - а это два символа. Следовательно в переменную запишется только первый, то есть единица. А ASCII код единицы 49.
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
18.02.2014, 15:58     как проверить нажатие "Enter" #5
Цитата Сообщение от danghyan Посмотреть сообщение
Нет не строками, все значения интовые.

C++
1
2
3
4
...
c=getchar()
if(c==13)
...
Если пользователь собирается вводить 13 в программу или если он нажмет "Enter"... Ведь в любом случае с=13 и выполняется if, не так ли?
getchar читает один символ. Если пользователь введёт "13", то считается только '1', то бишь (int)49. '3' останется в потоке.
Если он нажмёт enter, то и получишь (int)13.
SatanaXIII
Супер-модератор
Эксперт С++
5591 / 2625 / 239
Регистрация: 01.11.2011
Сообщений: 6,455
Завершенные тесты: 1
18.02.2014, 16:16     как проверить нажатие "Enter" #6
Вот, кстати, от Юры хороший пример: Стрелки клавиатуры в консоли.
danghyan
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 19
18.02.2014, 17:32  [ТС]     как проверить нажатие "Enter" #7
Цитата Сообщение от Бендерродригез Посмотреть сообщение
getchar читает один символ. Если пользователь введёт "13", то считается только '1', то бишь (int)49. '3' останется в потоке.
Если он нажмёт enter, то и получишь (int)13.
Сделал через getchar, но для ввода значения мне все равно приходится нажимать энтр, в потоке остается и код энтнра. Программа делает 2 шага и цикл вырубается от кода энтра в потоке.

Добавлено через 23 секунды
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Вот, кстати, от Юры хороший пример: Стрелки клавиатуры в консоли.
это штука работает только на винде, у меня мак.
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
18.02.2014, 17:42     как проверить нажатие "Enter" #8
Цитата Сообщение от danghyan Посмотреть сообщение
Сделал через getchar, но для ввода значения мне все равно приходится нажимать энтр, в потоке остается и код энтнра. Программа делает 2 шага и цикл вырубается от кода энтра в потоке.
Используй getch, она считывает символ сразу при нажатии клавиши, энтер для ввода не нужен.
danghyan
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 19
18.02.2014, 18:07  [ТС]     как проверить нажатие "Enter" #9
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Используй getch, она считывает символ сразу при нажатии клавиши, энтер для ввода не нужен.
на маке нету его, но поискал и нашел замену cin.get и то не помогло... в итоге нашел самый просто способ в лоб очистить поток через:
cin.ignore(numeric_limits<streamsize>::max(), '\n');

Теперь вопрос как получить из ansii кода сам символ? (из 49 например 1). Как то очень плохо получилось реализовать но все это конечно, но рас уж начал...

PS:Спасибо вроде бы получается что то.
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
18.02.2014, 18:26     как проверить нажатие "Enter" #10
Цитата Сообщение от danghyan Посмотреть сообщение
на маке нету его, но поискал и нашел замену cin.get и то не помогло... в итоге нашел самый просто способ в лоб очистить поток через:
cin.ignore(numeric_limits<streamsize>::max(), '\n');

Теперь вопрос как получить из ansii кода сам символ? (из 49 например 1). Как то очень плохо получилось реализовать но все это конечно, но рас уж начал...

PS:Спасибо вроде бы получается что то.
С маком не знаком, аналог getch, если он есть, не знаю.

Если ты чистишь поток после того, как прочитал первый символ, то как получишь оставшиеся?

C++
1
2
int i;
i = cin.get() - '0';  // код нуля равен 48.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2014, 18:45     как проверить нажатие "Enter"
Еще ссылки по теме:

Проверить истинность высказывания: "Треугольник со сторонами a, b, c является прямоугольным" - C++
даны целые числа a b c являющиеся сторонами некоторого треугольника. Проверить истинность высказывания:&quot; треугольник со сторонами a b c...

"Угадай число" (напишите программу, хочу проверить со своей). - C++
&quot;Угадай число&quot;. Пользователю предлагается отгадать число за 10 попыток. Программа даёт подсказки вида больше, меньше.

Проверить истинность высказывания: "Треугольник со сторонами a, b, c является равнобедренным" - C++
Надо сделать задание с использованием библиотеки # include &lt;iostream&gt; using namespace std; int main(void) до завтра Даны целые...

Проверить истинность высказывания: "Ровно одно из чисел A и B нечетное" - C++
Решите пожалуйста(написать программу) Даны два целых числа A,B. Проверить истинность высказывания: Равно одно из чисел A и B нечетное.

Проверить является ли квадратная матрица " магическим квадратом" - C++
Дан двумерный массив размером n х n , заполненный целыми числами. Выяснить, является ли массив магическим квадратом. В магическом квадрате...


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

Или воспользуйтесь поиском по форуму:
danghyan
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 19
18.02.2014, 18:45  [ТС]     как проверить нажатие "Enter" #11
Цитата Сообщение от Бендерродригез Посмотреть сообщение
С маком не знаком, аналог getch, если он есть, не знаю.

Если ты чистишь поток после того, как прочитал первый символ, то как получишь оставшиеся?

C++
1
2
int i;
i = cin.get() - '0';  // код нуля равен 48.
через цикл. каждый ход цикла - одно значение. Беру из потока свою цифру, оставшееся чищу, потом снова ввод - беру свою цифру - чищу.

C++
1
2
3
4
5
6
7
8
  while(b!=10){
        int b=cin.get();
        if(b==10){
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            break;}
        Creat(b, &le);
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
вот мой мягко говоря некрасивый цикл. Выглядит тоже неочень, но в принципе работает. Минус только 1 - то что в b кидаются не сами символы(цифры в данном случае), а их ansii коды...

PS: 10 - это энтер. на маке почему то так, знаю что по стандарту 13, но тут 10... если честно не вникал.
Yandex
Объявления
18.02.2014, 18:45     как проверить нажатие "Enter"
Ответ Создать тему
Опции темы

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