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

Ожидание клавиши Enter - getch не работает - C++

Восстановить пароль Регистрация
 
DimaDev
0 / 0 / 0
Регистрация: 06.04.2016
Сообщений: 5
06.04.2016, 15:54     Ожидание клавиши Enter - getch не работает #1
Друзья привет!
Спасибо всем, кто откликнется! Мелкий вопрос, но честно, уже голова кругом идет! Второй день бьюсь над совершенно элементарной прогой, скоро голова уже треснет!
Хочу написать простейшую программу: вводиться текст (любой!) и когда нажимается Enter программа выводит свой текст на экран консол (типа "Спасибо", или "Напишите еще", короче простой текст). Здесь на форму вычитал, что надо использовать getch для отлова нажатия клавиш. Написал такую прогу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstdlib>
#include <conio.h> 
using namespace std;
int main()
{
    cout << "Напишите что ни будь";
    cout << endl;
    char a;
    a = getch();
    if (a == 32) {
        cout << "Спасибо";
    }
    char b;
    b = getch();
    if (b == 32) {
        cout << "Напишите еще ";
    }
    return 0;
}
Но она не работает! Запуске пишет "Возникли ошибки сборки." Если нажать нет, то пишет, что "Ошибка 1 error C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details." Что я делаю не так? Может без этого getch можно как то сделать? Спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2016, 15:54     Ожидание клавиши Enter - getch не работает
Посмотрите здесь:

C++ Обработка нажатия клавиши без подтвержения enter
C++ Ожидание нажатия клавиши!!!
C++ Не работает getch()
C++ Подскажите аски код клавиши ENTER
Переназначить событие клавиши ENTER в консоли C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Virchow
4 / 3 / 4
Регистрация: 21.03.2016
Сообщений: 33
06.04.2016, 15:58     Ожидание клавиши Enter - getch не работает #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Используйте _getch();
DimaDev
0 / 0 / 0
Регистрация: 06.04.2016
Сообщений: 5
06.04.2016, 16:03  [ТС]     Ожидание клавиши Enter - getch не работает #3
Virchow, спасибо! Сообщение об ошибке перестало появляться. Т.е. правильно не getch, а _getch?
shogunuz
4 / 4 / 0
Регистрация: 02.03.2015
Сообщений: 382
06.04.2016, 16:05     Ожидание клавиши Enter - getch не работает #4
Можно и без гетч:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    setlocale(0,"");
cout << "ПРИВЕТ!\n";
system("pause");
 
return 0;
}
DimaDev
0 / 0 / 0
Регистрация: 06.04.2016
Сообщений: 5
06.04.2016, 16:18  [ТС]     Ожидание клавиши Enter - getch не работает #5
Все равно ничего не получается! (((
Объясните, пожалуйста, тупому, как это сделать?
Надо простейшие действия - вы вводите ЛЮБОЙ текст и нажимаете энтер, в ответ программа выдает заранее записанный в нее текст, затем вы опять вводите ЛЮБОЙ текст и нажимаете энтер, в ответ программа выводит следующий блок заранее записанного текста.
Я могу написать программку, которая будет считать, находить среднее, раскладывать на множители, а это - НЕ МОГУ!!! ((((((((
GbaLog-
Не Эксперт C++
1429 / 615 / 173
Регистрация: 24.08.2014
Сообщений: 2,488
Записей в блоге: 1
Завершенные тесты: 2
06.04.2016, 16:27     Ожидание клавиши Enter - getch не работает #6
shogunuz, А можно и кроссплатформенно и без всяких сообщений типа: "Press x to win.".
C++
1
std::cin.get();
Stitch Igorek
 Аватар для Stitch Igorek
44 / 44 / 17
Регистрация: 02.04.2016
Сообщений: 300
Завершенные тесты: 1
06.04.2016, 17:52     Ожидание клавиши Enter - getch не работает #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Напишите что ни будь";
    cout << endl;
    char str[50];
    int i = 0;
 
    while (true)
    {
 
        str[i] = _getch();
        cout << str[i];
        if (str[i] == 13)
        {
            str[i] = '\0';
            break;
        }
        i++;
    }
 
    cout << "Спасибо\n";
 
    cout << str;
    system("pause");
    return 0;
}
Добавлено через 3 минуты
работает только с английской раскладкой.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2016, 01:26     Ожидание клавиши Enter - getch не работает
Еще ссылки по теме:

Не работает getch() C++
C++ Нажатие клавиши без ожидания Enter
Убрать ожидание нажатия клавиши Enter при выводе C++

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

Или воспользуйтесь поиском по форуму:
DimaDev
0 / 0 / 0
Регистрация: 06.04.2016
Сообщений: 5
07.04.2016, 01:26  [ТС]     Ожидание клавиши Enter - getch не работает #8
В общем вот как я это сделал, обошелся без спец. функции ожидания энтера:

C++
1
2
3
4
5
6
7
string a, b;
cin >> a;
cout << "первый текст";
cout << endl;
cin >> b;
cout << "второй текст";
cout << endl;
Добавлено через 26 минут
УТОЧНЕНИЕ - НЕ РАБОТАЕТ!

Похоже, что в этой строке a и b - это любой текст, до пробела, а не до энтера
string a, b;

Казалось бы получилось - а нет(((
Подскажите, пожалуйста, что делать?
Yandex
Объявления
07.04.2016, 01:26     Ожидание клавиши Enter - getch не работает
Ответ Создать тему
Опции темы

Текущее время: 17:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru