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