0

重複の可能性:
std::cinからパスワードを読み取ります

C ++に慣れるために、簡単なパスワードプログラムを作成しようとしていますが、少し問題があります。このコードでは、ユーザーが選択したパスワードを入力してから入力します。私がコーディングしたいのは、入力を非表示にすることです( * sに置き換えないでください)が、次のように、カーソルと、パスワードを入力する前と後の上のテキストを表示します。

Please enter password: [don't show input]
Please re-enter password: [don't show input]

これどうやってするの?Linuxを使用しているため、Windowsライブラリ(windows.hなど)を使用できません。

4

2 に答える 2

4

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);
}
于 2012-12-04T00:27:24.120 に答える
0

フラグを呼び出しtcsetattrて変更する必要があります。ECHO

于 2012-12-04T00:26:05.340 に答える