使用ncursesw而不是使用ncurses进行getch输入的窗口

时间:2018-03-07 22:01:34

标签: c++ unicode ncurses getch widechar

我需要使用-lncursesw打印出unicode字符,否则它不会工作但是用它编译之后,用户输入的窗口会出现但是当我输入字符时,它不会显示但仍能输入。老实说,我不知道如何做这项工作,我已经用setlocale设置了语言环境(LC_ALL,"");

这是输入代码:

while ((ch = getch()) != KEY_F(9)) driver(ch);

和用于处理输入的示例代码(使用switch case)这是默认值:

    default:
        form_driver(commandForm, ch);
        showGrid();
        wrefresh(mainScreen);
        break;

这就是它的样子,第一张图片使用-lncursesw,第二张图片使用-lncurses。

This is using -lncursesw

This is using -lncurses

2 个答案:

答案 0 :(得分:0)

您正在使用功能

form_driver(commandForm, ch);

不会处理宽字符。此外,getch无法处理宽字符(提示:尝试选择/粘贴屏幕截图中显示的双线框字符到输入字段中)。

如果您打算处理Unicode(宽字符),则应使用get_wch。也, ncurses有一个备用函数form_driver_w(当然在 ncursesw 库中)可能有助于解决你的问题。

答案 1 :(得分:0)

使用-lformw而不是使用-lform。