C++ 按键输入vs'\n';?

C++ 按键输入vs'\n';?,c++,newline,curses,pdcurses,C++,Newline,Curses,Pdcurses,当我使用PDcurses并尝试退出while循环时,当使用while(key!=key\u enter)按下enter键时,while循环永远不会退出。但是,当((char)键!='\n')尝试使用退出相同的循环时,每当我按enter键时,它都会成功退出。为什么'\n'工作而不按键 顺便说一句,键是一个int 我希望这是相关的几行代码: int key; while((char)key != '\n') { key = getch(); ... } “\n”是标准ASCII换行

当我使用PDcurses并尝试退出while循环时,当使用
while(key!=key\u enter)
按下enter键时,while循环永远不会退出。但是,当((char)键!='\n')尝试使用
退出相同的循环时,每当我按enter键时,它都会成功退出。为什么
'\n'
工作而不按

顺便说一句,
是一个int

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

int key;
while((char)key != '\n') {
    key = getch();
    ...
}
“\n”是标准ASCII换行符,而ENTER键表示键盘代码。看

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

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

在大多数系统(如Windows、Linux等)上,当用户按下Enter键时,此函数将返回
'\n'
。为便于比较,在Windows上,按键本身(Enter)可能表示为键代码
VK\u Enter

PDCurses正在为您将关键代码转换为ASCII值


如果首先调用PDCurses函数
raw(),则可以获得所需的键值;诺尔()。另外,对于新代码,您可能应该使用
wgetch()

因为在按enter键之后,
键=='\n'
。它不可能同时等于两件事。如果你需要更多帮助,你应该发布你的代码。我不明白
key
如何成为
int
(所以它在任何时候都不等于
“\n'
,对吧?)在按下键后不等于
key\u ENTER
,但
(char)key
等于
\n
是的,int可以等于字符常量。尝试
intc=10;如果(c=='\n'){doSomething();}
使用
wgetch()
有什么好处?getch()是一个与该名称的c标准函数冲突的宏。wgetch(窗口*)不会冲突。如果您喜欢缺少参数,可以创建自己的替换宏,可以将其称为getkey()或getcursed()。
getch()
和使用int表示字符的另一个问题是unicode。您不能表示用户可能在int中输入的所有字符,而getch()来自ASCII天。标准中确切定义的
getch()
在哪里?我从未见过它。@Heathunnicutt:
getch
从来都不是标准库的一部分。
KEY_ENTER == 0x157, '\n' == 0xA