I wonder if there is any code to make what you type (ex. Hello
becomes *****
) becomes unreadeble.
i have this code
string pass;
When you type in for the "cin" i dont want any one to be able to read it.
cin >> pass;
cout << pass;
I wonder if there is any code to make what you type (ex. Hello
becomes *****
) becomes unreadeble.
i have this code
string pass;
When you type in for the "cin" i dont want any one to be able to read it.
cin >> pass;
cout << pass;
Here we are masking input with asterisk. We use tcgetattr
/tcsetattr
to get and set terminal attributes so echo is disabled on stdin and we print "*"
instead on each character user input.
#include <iostream>
#include <string>
#include <termios.h>
#include <stdio.h>
int getch() {
struct termios oldtc, newtc;
int ch;
tcgetattr(STDIN_FILENO, &oldtc);
newtc = oldtc;
newtc.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newtc);
ch=getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldtc);
return ch;
}
int main(int argc, char **argv) {
int ch;
printf("Press ENTER to exit.\n\n");
for (;;) {
ch = getch();
if(ch == '\n')
break;
printf("*");
}
return 0;
}
The code below is tested and runnable on Visual Studio 2012 (also VC6.0). Visit http://msdn.microsoft.com/en-us/library/aa297934%28v=vs.60%29.aspx for more information about function _getch().
_getch(): Get a character from the console without echo (_getch) or with echo (_getche).
#include <iostream>
#include <string>
#include <conio.h>
int main()
{
std::string pass;
for(int c; c = _getch(); ){
if(c=='\r' || c=='\n' || c==EOF){
break;
}else{
pass += c;
std::cout << '*';
}
}
std::cout << "\nYour password is: " << pass << std::endl;
return 0;
}