我想弄清楚是否有办法在用户输入数字时将某些字符按行移动。
例如,我希望用户在 [__] 之间输入他们的号码。但是,当用户输入数字时,它最终会覆盖']'。如何在用户输入数字时移动“]”?
我希望我不必循环并一次获取单个字符。 (我期待双重值(value))
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.
最佳答案
这只有在控制台支持的情况下才有可能,例如 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[D
例如,您可以:
std::cout << "Enter a number between 1 and 10: [..]\033[D2";
(您可能需要稍微调整一下该字符串,这不是我很长时间以来使用的东西)。
打印提示然后移动光标。
关于c++ - 使用用户输入动态更改控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33833578/