C++ 按键输入vs'\n';?
当我使用PDcurses并尝试退出while循环时,当使用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换行
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