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

标签 c++

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

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

我希望我不必循环并一次获取单个字符。 (我期待双重值(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/

相关文章:

C++ 崩溃(编译器?)

c++ - -masm=intel 标志不适用于使用 Intel 语法在 gcc 编译器中运行汇编语言

c++ - 是否所有 using 指令都被视为与 using namespace std 相同的方式?

C++ - 系统的odeint解决方案差异很大

c++ - 编译错误 : cast void * failed in C/C++

c++ - 是否可以在另一个语法定义中重用 boost::spirit::qi 语法?

c++ - C++中函数作为变量的语义是什么

C++ 函数使用引用作为参数错误

c++ - 在c中的链表中找到最小的两个节点

c++ - 多重继承调用 shared_from_this 导致的 Bad_weak_ptr