如何在控制台应用程序中创建命令历史记录
How to make command history in console application?
我想制作一个交互式控制台应用程序,它允许在循环中输入命令。例如,用户键入"搜索",程序就会找到一些数据并将其打印在屏幕上。然后程序等待下一个命令(可以是搜索、退出或其他)。为了方便用户,我希望我的程序支持命令历史记录(就像在终端中,当按下键盘上的上下箭头时)。但我不知道该怎么做,因为我不知道如何打印可以通过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
)中?或者也许还有更优雅的方式来组织指挥历史?
附言:我也想过模拟按下按钮来打印我需要的文本,但我希望有更好的方法来制作命令历史
p.p.S.我使用Linux和C++
使用readline
和history
库,它们正是为此目的而制作的。
如果你不想使用Kerrek SB建议的库,你可能会考虑另一个方向:
1) 历史中应该有哪些命令?->所有的命令,用户键入。2) 你怎么知道,用户键入了什么?->你从std::in得到的3) 您如何处理std::in中的命令?->您处理它们(例如,当用户键入"搜索"时开始搜索)
除了步骤3之外,您还可以存储用户在内部键入的命令(例如,以某种向量)。如果现在您的用户想要使用命令历史记录并按下"向上键"(或"向下键"),您只需在内部向量中查找相应的命令即可。之后他按"回车"?只需处理命令,即从您的内部命令历史记录中选择的用户。
- 在命令行中创建快捷命令
- make 命令创建 .file,但不创建应用程序文件
- 如何使用 c++ 在命令行中创建一个简单的字符控制器?
- 如何在 C++11 中创建具有命令行参数大小的动态数组?
- 创建在选定目录中打开的命令提示过程
- 第二次创建命令缓冲器时,在VKCMDDrawIndex中进行了segfault
- 使用 QT 创建器通过树莓派上的 Wifi 执行简单的终端命令
- 创建进程命令行参数
- 从命令行创建通用对象
- 如何创建一个 void 数组,其大小将由用户从命令行输入指定
- 使用创建进程函数创建"dir"命令失败,错误代码为 2
- 使用boost.program_options创建一个前缀命令
- 如何在C 程序中创建终端命令
- 在命令上创建或删除GDI形状
- 从命令行创建Intellisense数据库
- 如何在控制台应用程序中创建命令历史记录
- 创建命令并通过linux终端执行
- 命令模式:在哪里创建命令项
- xcode像windows一样创建命令行窗口
- 如何使用要在 cmd 中执行的变量创建命令