正在从控制台读取数据
Reading data from the console
我编写了一个控制台应用程序,它在运行时有自己的命令提示符。不幸的是,我不能简单地调用std::cin并等待输入,因为我需要为了命令历史的目的而向上/向下解释。
相反,我不得不关闭echo,将控制台置于非匿名模式,并使用"read"命令逐个获取每个字符,如果它们是可打印字符,则回显它们,或者如果是转义码的开头,则尝试解析/解释它们。
我遇到的问题是,很难以通用/通用的方式读取和解析各种转义代码。当我必须读取/解析对大小/位置查询的响应时,问题就更大了。
有没有更好的方式从终端读取?是否有可以读取/解析特殊终端代码的特殊功能?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库。听起来这正是你想要的。如果这个商业代码,请注意许可证。
如果您没有使用GUI或Windowing系统,请查看ncurses
库包。
相关文章:
- 如何在ros2中从rosbag2读取数据
- OpenCV 和从 OutputArrays 或 (Mat) 读取数据
- 使用C++从磁卡读卡器MT188读取数据
- HDF5 简单读取数据集失败
- 嵌套结构,从由空行分隔的文件中读取数据
- 不要从输入队列套接字读取数据
- 从文件中读取数据,操作员>>
- 如何从excel文件中读取数据并存储到变量中?
- C++:从文件中读取x y数据会产生无限循环吗
- 无法通过FT232RL读取数据
- 如何从QNetworkReply读取数据?
- C++ 逐行从文件(包含空格)读取数据
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 我们可以从 TXT 文件中读取数据并使用 C 和 C++ 将其保存到 SQL 数据库吗?
- 从多个 tcp 连接读取数据
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- Qt TCP服务器不从客户端读取数据
- 累积从 C++11 中的文件中读取数据的整数
- 从 txt 文件中读取数据的最简单方法
- 从 txt 文件中读取数据的 Getline