gpt4 book ai didi

c++ - 在我输入时显示 *(隐藏/屏蔽输入)

转载 作者:可可西里 更新时间:2023-11-01 11:27:58 28 4
gpt4 key购买 nike

我正在获取密码作为输入。我已经看过各种示例,但它们要么使用 while 循环,要么使用 SETCONSOLE 方法。两者都有问题。在我输入字符之前实现 while 循环打印 1 *。另一种方法是在我键入时使用 echo HIDE 字符,而我想打印出来。我将不胜感激帮助我使用 SETCONSOLE 方法用 * 屏蔽我的输入。我将不胜感激。附上代码!

 void signup(){
gotoxy(10, 10);
string n, p1,p2;
cout << "Enter your username: " << endl; // TEST if username already exists
gotoxy(31, 10);
cin >> n;
lp:
gotoxy(10, 11);
cout << "Enter your password: " << endl; // TEST if username already exists
gotoxy(31, 11);

getline(cin, p1);
system("cls");
gotoxy(10, 10);
cout << "Re-Enter your password to confirm: " << endl; // TEST if username already exists
gotoxy(45, 10);
getline(cin, p2);



if (p2!=p1)
{
system("cls");
gotoxy(10, 10);
cout << "Passwords donot match! Please enter again!";
goto lp;
}

最佳答案

这里是一个使用 getch 的简单示例。是的,它是 c 方法,不是 c++,但它非常有效。

可以扩展为 block 空格、制表符等

另见代码中的注释...

#include <iostream>
#include <string>
#include<conio.h>
using namespace std;


int main(){
string res;
char c;
cout<<"enter password:";
do{
c = getch();
switch(c){
case 0://special keys. like: arrows, f1-12 etc.
getch();//just ignore also the next character.
break;
case 13://enter
cout<<endl;
break;
case 8://backspace
if(res.length()>0){
res.erase(res.end()-1); //remove last character from string
cout<<c<<' '<<c;//go back, write space over the character and back again.
}
break;
default://regular ascii
res += c;//add to string
cout<<'*';//print `*`
break;
}
}while(c!=13);
//print result:
cout<<res<<endl;
return 0;
}

关于c++ - 在我输入时显示 *(隐藏/屏蔽输入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29810055/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com