C++如何用键盘方向键控制光标左右移动
本帖最后由 沉默的人e 于 2021-5-9 12:53 编辑如题.
在C++中, 常用的控制台输入语句 cin 和 scanf 都会存在一个问题:
不能通过按方向键, 控制光标移动.
如, 以下为源代码
# include <iostream>
int main (void)
{
int a;
std::cout<<"输入数字"<<std::endl;
std::cin>>a;
std::cout << "你刚才输入的数字是"<<a<<std::endl;
return 0;
}运行后的结果如图:
但是如果这里按下方向键,就会变成这样:
诚问解决方法, 让用户按下左右方向键后, 光标会向左向右移动, 直至开头或结尾时不再移动, 按上下方向键后, 提取上一次输入记录, 或下一条输入记录.系统: Ubuntu 20.04LTS
好像在 cin、scanf 这些函数中没办法实现这个功能,至少是我没办法了
我也百度找了好久,找不到,不过却发现了 readline 这个库
这个库可以非常容易的实现你的要求
参考 https://blog.csdn.net/xuancbm/article/details/81436681
#include <stdio.h>
#include <stdlib.h>
#include <readline/readline.h>
#include <readline/history.h>
int main(void) {
while(1) {
char *str = readline("sh$ ");
if(!str) break;
add_history(str);
printf("%s\n", str);
free(str);
}
return 0;
}
谢谢, 不过还是找到了. 字符里面有一个比较神奇的字符 按照ASCII标准, 排行第27位, 常用表达方式是'\033'
页:
[1]