数组输入C++中的退格
Backspace in array input C++
以下是登录程序的代码,该程序输入用户名,然后输入密码,同时为输入的每个字符回显"*",然后将用户名和密码与预设值进行比较,看看它们是否匹配,如果匹配则退出程序,否则返回到开头。
int main()
{
int i = 0; string u; char parr[i + 1], ch;
while (1)
{
system("cls");
cout << "Enter username." << endl;
cin >> u;
system("cls");
cout << "Enter password." << endl;
i = 0;
while (1)
{
tag:ch = getch();
if (ch == 'r')
{
break;
}
if (ch == 'b')
{
cout << 'b';
--i;
ch = ' ';
parr[i] = ' ';
cout << ' ' << 'b';
goto tag;
}
parr[i] = ch;
ch = '*';
cout << ch;
++i;
}
parr[i] = ' ';
string p = "password";
if (u == "username" && parr == p)
{
system("cls");
cout << "Welcome!";
break;
}
else
{
system("cls");
cout << "Username and password entered does not match! Please try again.";
}
getch();
}
getch();
}
现在,问题来了:最近,我发现这种输入方法(用于密码)在使用Backspace、Delete或箭头键时无法正常工作。所有这些键都输入特定的符号,而不是删除字符或移动光标。因此,我尝试了一种退格键的变通方法(目前仅限)。所有操作都很好——当我按下退格键时,前一个字符被删除了,但最终,在与预设值进行比较后,它显示密码不匹配。
如果你能在以下方面帮助我:
*工作后退键功能(如果可能,还可以删除和箭头键)
*在程序的任何一点按Esc键都会退出。
*我在这个节目中使用了goto
,我们都知道它的暴行。请给我一个避免这种情况的方法,同时让所有这些代码比它当前的混乱状态更整洁。
使用continue
而不是goto
。在您的情况下,这将执行相同的操作:跳到循环的开始
然后运行调试器,观察如果输入退格,数组会发生什么。
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 用户定义函数中的指针和输入
- 如何在C++中检查2D数组中负值的输入验证
- 如何只允许用户输入正整数
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 输入中的字符串数未知(以字母表示)
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 在一个模板函数中,若输入的类型是enum类,我该如何使用std::underlying_type