c++ - 如何在控制台应用程序中创建命令历史记录?

标签 c++ linux console terminal

我想制作交互式控制台应用程序,它允许循环输入命令。例如,用户键入“搜索”,程序会找到一些数据并将其打印在屏幕上。然后程序等待下一个命令(可以是搜索、退出或其他)。为了方便用户,我希望我的程序支持命令历史记录(比如在终端中,当按下键盘上的上下箭头时)。但我不知道该怎么做,因为我不知道如何打印可以通过 scanf、std::getline、std::cin 等进一步读取的文本。 所以代码 std::cin << "hello";未编译(与‘std::cin <<“hello”’中的‘operator<<’不匹配)。函数fprintf(stdin, "hello");不打印任何内容,并且 scanf 无法读取此打印的消息。很明显std::getline(std::cin, str);scanf("%s", s);gets(s)等等无法读取 printf 输出的文本或 std::out .所以问题是:如何在控制台上打印也将在 stdin 中的文本(std::cin)?或者也许有更优雅的方式来组织命令历史记录?

附言我也考虑过模拟按下按钮来打印我需要的文本,但我希望有更好的方法来制作命令历史记录

附言我使用 Linux 和 C++

最佳答案

使用 readline and history libraries ,正是为此目的而制作的。

关于c++ - 如何在控制台应用程序中创建命令历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18505947/

相关文章:

c++ - 在函数中使用结构对象

与Linux中的内存映射设备通信

ruby-on-rails - git status 显示将开发平台从 Windows 更改为 Linux 后修改的文件列表

linux - 如何在多个文件中运行多年和 12 个日历月的时间戳?

c++ - 在没有 cin 的情况下从控制台获取输入?

c# - .Net 是否有任何控制台 "graphics"库?

c++ - 代数数的计算

c++ - Xcode 5 在 usr/include 中找不到头文件

c++ - 实现迭代器时声明 value_type

c++ - 在 Windows 控制台中正确打印 utf8 字符