2012-12-04 2 views
0

가능한 중복 :
Read a password from std::cinC++에서 cin으로 사용자 입력을 숨기려면 어떻게해야합니까?

나는 그래서 C++에 익숙해 질 수있는 간단한 암호 프로그램을 만들려고 노력하고있어,하지만 약간의 문제가 있어요. 이 코드에서는 사용자에게 선택하는 비밀번호를 묻고 입력합니다. 내가 뭘 원하는 코드를하는 것은 전에 위 (하지은 *로 교체),하지만 여전히 커서를 표시, 입력, 텍스트를 숨길 수 있으며, 암호 후 다음과 같이 입력 :

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

어떻게하면됩니까? 나는 리눅스를 사용하고 있으므로 모든 윈도우 라이브러리 (windows.h 등)를 사용할 수 없습니다.

+0

에코 속성을 설정하는 방법에 대한 istream 설명서를 살펴 보았습니까? – John

+0

@ 존, 당신은 표준 C++ 문서에서 찾을 수 없을 것입니다. – chris

+0

부끄러운 줄 아는 ... – John

답변

3

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); 
} 
+0

고마워, 완벽하게 작동했습니다! – Predictability

0

tcsetattr으로 전화를 걸어 ECHO 플래그를 수정하십시오.

관련 문제