我想制作交互式控制台应用程序,它允许循环输入命令。例如,用户键入“搜索”,程序会找到一些数据并将其打印在屏幕上。然后程序等待下一个命令(可以是搜索、退出或其他)。为了方便用户,我希望我的程序支持命令历史记录(比如在终端中,当按下键盘上的上下箭头时)。但我不知道该怎么做,因为我不知道如何打印可以通过 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/