沉默的人e 发表于 2021-5-9 12:51:38

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

人造人 发表于 2021-5-9 12:51:39

好像在 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;
}

沉默的人e 发表于 2023-5-6 19:51:06

谢谢, 不过还是找到了. 字符里面有一个比较神奇的字符 按照ASCII标准, 排行第27位, 常用表达方式是'\033'
页: [1]
查看完整版本: C++如何用键盘方向键控制光标左右移动