我正在尝试使用“交互式控制台”(可能是错误的术语)创建一个简单的项目,我基本上可以将输入和输出同时安全地放在屏幕上。我一直在尝试使用 GNU Readline 程序,因为我认为它可以帮助我实现我的目标,但到目前为止我还没有运气。
下面的示例程序:
#include <stdlib.h>
#include <readline/readline.h>
#include <readline/history.h>
#include <thread>
#include <iostream>
#include <chrono>
int main()
{
// Configure readline to auto-complete paths when the tab key is hit.
rl_bind_key('\t', rl_complete);
std::thread foo([]() {
for (;;) {
std::cout << "hello world " << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
});
for(;;) {
// Display prompt and read input
char* input = readline("prompt> ");
// Check for EOF.
if (!input)
break;
// Add input to readline history.
add_history(input);
// Do stuff...
// Free buffer that was allocated by readline
free(input);
}
return 0;
}
我想要的输出是
hello world
hello world
hello world
... keeps printing every second
prompt> I have some text sitting here not being disturbed by the above "hello world" output printing out every second
请注意,我不需要使用 readline 库,但在这个示例程序中我正在尝试它。
在 C/C++ 中这样的事情可能吗?我已经看到它在其他编程语言(如 Java)中完成......所以我想它必须在 C 或 C++ 中是可能的。
有没有支持这个的库?我已经在谷歌上搜索了 2 个小时左右,但没有找到可以做我上面描述的事情的运气。
谢谢。