Как скрыть ввод пользователя с помощью cin в C ++?


person Predictability    schedule 04.12.2012    source источник
comment
Просматривали ли вы документацию istream, чтобы узнать, как установить свойство no echo?   -  person John    schedule 04.12.2012
comment
@John, Вы этого не найдете ни в одной стандартной документации по C ++.   -  person chris    schedule 04.12.2012


Ответы (2)


Вы не можете сделать это напрямую с помощью cin. Вы должны спуститься «ниже». Попробуйте вызвать эти функции:

#include <termios.h>

...

void HideStdinKeystrokes()
{
    termios tty;

    tcgetattr(STDIN_FILENO, &tty);

    /* we want to disable echo */
    tty.c_lflag &= ~ECHO;

    tcsetattr(STDIN_FILENO, TCSANOW, &tty);
}

void ShowStdinKeystrokes()
{
   termios tty;

    tcgetattr(STDIN_FILENO, &tty);

    /* we want to reenable echo */
    tty.c_lflag |= ECHO;

    tcsetattr(STDIN_FILENO, TCSANOW, &tty);
}
person Nik Bougalis    schedule 04.12.2012
comment
Спасибо, отлично сработало! - person Predictability; 04.12.2012

Вы захотите вызвать tcsetattr и изменить флаг ECHO.

person Ben Voigt    schedule 04.12.2012