使用用户输入动态更改控制台

Dynamically Change Console with User Input

本文关键字:控制台 动态 输入 用户      更新时间:2023-10-16

我正试图弄清楚,当用户输入数字时,是否有办法在一行中移动某些字符。

例如,我希望用户输入他们在[__]之间的号码。但是,当用户输入数字时,它最终会覆盖"]"。当用户输入数字时,我该如何移动"]"?

我希望我不必一次循环并获得单个字符。(我期待一个双倍的价值)

std::cout << "Enter a number between 1 and 10: []bb";
std::cin >> variable;
// not sure if I should loop through individual character input from user.

这只有在控制台支持的情况下才有可能,例如,windows控制台使用与Linux不同的代码。

您需要发送到终端的命令是ANSI转义序列,如下所述:

http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html

  • 定位光标:\033[;H或\033[;f将光标放在L行和C列
  • 将光标上移N行:\033
  • 将光标下移N行:\033[B
  • 将光标向前移动N列:\033[C
  • 将光标向后移动N列:\033[天

例如,你可以:

std::cout << "Enter a number between 1 and 10: [..]33[D2";

(你可能需要稍微调整一下这个字符串,这不是我用了很长时间的东西)。

打印提示,然后移动光标。