KEY_ENTER vs'\ n'?

时间:2010-06-03 04:27:56

标签: c++ newline curses pdcurses

当我使用PDcurses时,如果用while(key != KEY_ENTER)按下回车键,我尝试使用while循环退出,while循环永远不会退出。但是,当我尝试使用while((char)key != '\n')进行相同的循环退出时,只要按下回车键,它就会成功退出。为什么'\n'有效而不是KEY_ENTER

btw,key是一个int

我希望这是代码中相关的几行:

int key;
while((char)key != '\n') {
    key = getch();
    ...
}

2 个答案:

答案 0 :(得分:3)

getch()是由C运行时库的ANSI C标准定义的函数。

在大多数系统(如Windows,Linux等)上,此功能用于在用户按Enter键时返回'\n'。对于比较,在Windows上,按键本身(Enter)可能表示为键代码VK_ENTER

PDCurses正在将密钥代码转换为ASCII值。

如果您第一次调用PDCurses函数raw(); nonl();,则可以获得所需的键值。此外,您应该使用wgetch()来获取新代码。

答案 1 :(得分:2)

KEY_ENTER == 0x157, '\n' == 0xA

'\ n'是标准的ASCII换行符,而KEY_ENTER表示键盘代码。请参阅the PDCurses code

有关详细信息,请发布代码的相关部分。