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

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

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

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

06.04.2016, 15:54. Просмотров 516. Ответов 7
Метки нет (Все метки)

Друзья привет!
Спасибо всем, кто откликнется! Мелкий вопрос, но честно, уже голова кругом идет! Второй день бьюсь над совершенно элементарной прогой, скоро голова уже треснет!
Хочу написать простейшую программу: вводиться текст (любой!) и когда нажимается 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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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-
Любитель чаепитий
2588 / 1127 / 280
Регистрация: 24.08.2014
Сообщений: 4,128
Записей в блоге: 1
Завершенные тесты: 2
06.04.2016, 16:27     Ожидание клавиши Enter - getch не работает #6
shogunuz, А можно и кроссплатформенно и без всяких сообщений типа: "Press x to win.".
C++
1
std::cin.get();
Stitch Igorek
45 / 45 / 18
Регистрация: 02.04.2016
Сообщений: 308
Завершенные тесты: 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(), ни getch() C++
C++ Обработка нажатия клавиши без подтвержения enter
обработка клавиши enter для textbox'a на форме C++
Остановить ввод после нажатия клавиши 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 не работает
Ответ Создать тему
Опции темы

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