代码之家  ›  专栏  ›  技术社区  ›  Epic Boss

ncurses getch()奇怪的输出?

  •  -2
  • Epic Boss  · 技术社区  · 7 年前

    我已经安装了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;
    }
    

    它给出了以下错误:

    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氧气

    1 回复  |  直到 7 年前
        1
  •  0
  •   Tomasz Maciejewski    7 年前

    您需要初始化 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;
    }