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

时间:2015-11-20 18:26:37

标签: c++

我想弄清楚当用户输入数字时是否有办法移动某些字符。

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

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

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

1 个答案:

答案 0 :(得分:1)

只有在控制台支持它时才可以这样做,例如Windows控制台使用不同的代码到Linux。

您需要发送到终端的命令是ANSI转义序列,在此处描述:

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

  • 定位光标: \ 033 [; H  要么 \ 033 [;˚F 将光标放在第L行和第C列。
  • 将光标向上移动N行: \ 033 [A
  • 将光标向下移动N行: \ 033 [B
  • 将光标向前移动N列: \ 033 [C
  • 向后移动光标N列: \ 033 [d

例如,您可以:

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

(您可能需要稍微调整一下这个字符串,这不是我在很长一段时间内使用过的。)

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