Как запретить вывод консоли из cin - PullRequest
0 голосов
/ 20 ноября 2010

Как можно предотвратить печать cin на экран консоли в C ++?Учитывая эту простую программу:

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World..." << endl;

    cin.clear();
    cout << "Press ENTER to Continue..." << endl;
    cin.ignore();

    exit(0);
}

Так что, если пользователь нажимает на клавиатуре, ничего не произойдет, пока не будет нажата ENTER.В настоящее время это прекрасно работает, но cin выводит нажатия клавиш на консоль.Как предотвратить это поведение?


Редактировать: я работаю в Visual Studio 2010 и задаю этот простой вопрос, потому что хочу что-то не зависящее от платформы.

Ответы [ 3 ]

5 голосов
/ 20 ноября 2010

В Windows вам нужно SetConsoleMode.

Не существует стандартного независимого от платформы способа, хотя, конечно, вы можете написать свою собственную функцию disable_echo() и использовать #if _WIN32 и#if __LINUX__ для обеспечения зависящих от платформы реализаций независимого от платформы интерфейса.

0 голосов
/ 20 ноября 2010

Это не может быть сделано. C ++, как языковая спецификация, не относится к вашей клавиатуре - это чисто решение платформы, и, к сожалению, различные платформы (даже удаленно) не приблизились к согласованию спецификации для чего-либо неопределенно связанного с терминалом.

Лучше не волноваться и не полагаться на это.

0 голосов
/ 20 ноября 2010

Вам необходимо использовать функции termios(3) для переключения режима ECHO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...