我正在try 用c++为Linux编写一个简单的文本编辑器.这需要一个从终端读取字符的While循环,到目前为止,我只是显示它们的ASCII值.问题是,使用不同的输入函数会产生不同的输出.
如果我使用read()
从终端获取字符,则必须在每隔cout
次手动刷新缓冲区,才能在每次按键后获得输出,如下所示:
char c = '0';
while ((read(STDIN_FILENO, &c, 1) == 1) && c != 'q') {
cout << std::hex << (int)c<<std::flush;
}
如果我不这样做,我只有在While循环结束后(即如果我按q
)才会得到输出.
另一方面,如果我使用cin.get()
,那么我不会遇到任何问题.我可以简单地做
char c = '0';
while (cin.get(c) && c != 'q') {
cout << std::hex << (int)c;
}
对于上下文,由于我不知道这是什么类型的问题,以下是我的系统的一些细节:
OS: Debian GNU/Linux 12 (bookworm) x
Host: Blade 14 - RZ09-0370 1.04
Kernel: 6.1.0-17-amd64
Shell: zsh 5.9
DE: GNOME 43.9
提前谢谢!