6

我正在尝试制作一个 C++ 程序来读取密码。我将程序制作为 cout *,而不是我写的字符,但我的问题是当我想删除字符时,因为它们是错误的。
示例: 我的固定密码是12345
如果我进入1235 程序将显示****,我必须删除最后一个字符。将其从字符串中删除很简单,但我希望最后一个*从控制台中消失,就像您介绍 Windows 密码时一样。
可能吗?如果是,有人可以解释一下吗?

4

6 回答 6

9

输出退格字符 '\b' 可能有助于将输出点向后移动。

具体来说,输出字符串 "\b \b" 应该清除最后一个字符输出。

于 2012-11-18T12:59:59.867 回答
3
printf("\b ");

该语句肯定有效,因为在光标返回一个字符后,上面printf语句中给出的空格将覆盖控制台输出上的打印字符。

于 2015-02-01T10:18:28.483 回答
1

当我使用 putch 函数(来自 conio.h )写信给控制台来模拟退格键时

std::cout << '\b';

或者

printf("\b ");

不工作我必须写:

cout << '\b' << " " << '\b';

或者

putch('\b');
putch(' ');
putch('\b');
于 2016-01-10T11:21:53.870 回答
0

尝试退格 \b 或删除整行并再次打印。

于 2012-11-18T12:58:43.677 回答
0

简单地将'\b'字符写入 stdout std::cout<<"\b"。如果您使用 cpp 或printf("\b")纯 C

于 2012-11-18T13:07:20.370 回答
0

我最近遇到了同样的事情,使用\bwas** 将光标向后移动** 但它没有删除 char (或 * )。我意识到之后您输入的下一个字符\b将替换(要删除的字符)。所以,我想出了这样的事情

printf(“\b \b”);

使用space keyafter\b将替换要删除的字符,然后再次使用 the\b将使您再次回到一个位置(到错误字符所在的位置,但这次字符将不存在)这样您的输出看起来会很流畅。希望对你有帮助

于 2021-12-17T00:08:37.323 回答