本帖最后由 沉默的人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;
- }
复制代码
|