gpt4 book ai didi

c++ - 从控制台读取数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:33 25 4
gpt4 key购买 nike

我编写了一个控制台应用程序,它在运行时有自己的命令提示符。不幸的是,我不能简单地调用 std::cin 并等待输入,因为我需要出于命令历史记录的目的解释向上/向下。

相反,我必须关闭回显并将控制台置于非规范模式,并使用“读取”命令一一获取每个字符,如果它们是可打印字符,则回显它们,或者如果它是转义码的开头,则尝试解析/解释它们。

我遇到的问题是很难以通用/通用的方式读取和解析各种转义代码。当我必须读取/解析对大小/位置查询的响应时,问题变得更加严重。

有更好的方法从终端读取吗?是否有特殊的函数可以读取/解析特殊的终端代码? ncurses 不是一个可行的选项(它会清除屏幕,甚至只使用 filter() 似乎有些过分),而其他应用程序一直这样做,而不必引入这些依赖项......我做错了什么?

这是我当前的“getch”函数的一个片段,它执行的读取非常有限(并且使用更高级的代码,会损坏)。

int getch_ex()
{
int buf = 0;
size_t count = read(0, &buf, 1);
if ((count > 0) && (buf == ESCAPE_CODE))
{
size_t count = read(0, &buf, 1); // [
if ((count > 0) && (buf == '['))
{
count = read(0, &buf, 2);
}
}
return (buf);
}

其他带提示的终端应用程序(grub、python 等)如何实现此目的?

我的主要目标是 Linux 和 OS X。

最佳答案

看看readline图书馆。听起来这正是您想要的。请注意license如果这个商业代码虽然。

关于c++ - 从控制台读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17914778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com