ncurses getch()奇怪的输出?

时间:2017-08-22 19:36:32

标签: c++ char ncurses

我已经安装了ncurses.h lib并开始尝试使用getch()函数。当我构建并运行这个代码时,我起初看起来很不错,控制台打印出一个奇怪的字符:' '(如果它没有显示并显示为空格这里是一个屏幕截图:https://prnt.sc/gbrp7b)控制台开始发送垃圾邮件但是如果我输入一个字符,它会显示在输出中但仍然是' '垃圾邮件。这是代码:

#include <iostream>
#include <fstream>
#include <ncurses.h>

using namespace std;

int main(){

    char input;

    while(true){

        input = getch();

        cout << "You entered : " << input << endl;


        //break;
    }


 return 0;
}

所以我想尝试使用if语句尝试阻止垃圾邮件,但代码无法识别该字符:

它给出了这个错误:

error: character too large for enclosing character literal type

对于此代码:

#include <iostream>
#include <fstream>
#include <ncurses.h>

using namespace std;

int main(){

    char input;

    while(true){

        input = getch();
        if(input!='�'){
            cout << "YOu entered : " << input << endl;
        }


    }


 return 0;
}

我在OSX Sierra 10.12.5并使用eclipse Oxygen

1 个答案:

答案 0 :(得分:0)

您需要使用ncurses初始化initscr()并使用endwin()函数将其关闭:

#include <iostream>
#include <fstream>
#include <ncurses.h>

using namespace std;

int main(){
    char input;

    initscr();

    while (true) {
        input = getch();
        cout << "YOu entered : " << input << endl;
    }

    endwin();

    return 0;
}