C++ c&x2B中带有ncurses的新线路+; #包括 int main(int argc,字符**argv) { initscr(); 而(1){ int c=getch(); 如果(c=='q'){ 打破 } } 返回0; }

C++ c&x2B中带有ncurses的新线路+; #包括 int main(int argc,字符**argv) { initscr(); 而(1){ int c=getch(); 如果(c=='q'){ 打破 } } 返回0; },c++,return,ncurses,tui,C++,Return,Ncurses,Tui,好的,很抱歉格式错误,但这就是代码。 它的工作很好,终端捕捉我按下的任何字符,但当我按下回车键时,我无法获得换行符。 为什么? 感谢curses具有以下功能: nl和nonl例程控制底层显示设备 在输入时将返回键转换为换行符 提到ICRNL: #include <ncurses.h> int main(int argc, char ** argv) { initscr(); while(1){ int c = getch(); i

好的,很抱歉格式错误,但这就是代码。 它的工作很好,终端捕捉我按下的任何字符,但当我按下回车键时,我无法获得换行符。 为什么?


感谢

curses具有以下功能:


nl
nonl
例程控制底层显示设备 在输入时将返回键转换为换行符

提到ICRNL:

#include <ncurses.h>

int main(int argc, char ** argv)
{
    initscr();
    while(1){
        int c = getch();
        if(c == 'q'){
            break;
        }
    }
    return 0;
}
这是一个特点:

CR

输入时的特殊字符,如果设置了
ICANON
标志,则可识别该字符;这就是性格。当设置了
ICANON
ICRNL
且未设置
IGNCR
时,此字符应翻译为
NL
,并应具有与
NL
字符相同的效果。这是无法改变的


你怎么知道你没有收到新线?调试器?打印您在示例中遗漏的语句?我已从终端运行此语句,当我按ENTER键时,光标返回到同一行的(0,0)。只是试着编译。不幸的是,我现在还不能运行代码——没有安装curses库的windows box。如果你打印出
c
你会得到10吗?是的!如果我按回车键,打印10Groovy。你得到了新线。很不幸,为什么你在控制台上得到了一个回车,这比我的工资级别还高。
/*
 * Simulate ICRNL mode
 */
if ((ch == '\r') && sp->_nl)
    ch = '\n';