【发布时间】:2021-06-27 15:02:47
【问题描述】:
有一个应用程序会生成随机文本并等待用户输入。然后,它将每个输入的字符与文本中的一个字符进行比较(类型训练器应用程序),迭代文本中的每个字符。我遇到了一个unicode问题。据我了解,需要使用<wchar.h>
我首先从用户那里获取一个角色
setlocale(LC_ALL, "");
wint_t c;
wget_wch(text_window, &c);
然后进行比较
wchar_t *p = L"Big Unicode text";
while (*p != '\0') {
if (c == *p) { // if the user entered the correct first character, adding a character to text with green color
xcount++;
mvwaddch(ptext_win, ycount, xcount, c);
p++;
} else {
// entered the wrong character, red colors
mvwaddch(ptext_win, ycount, xcount, p);
}
}
但是函数mvwaddch不适合wint_t
我尝试使用mvwaddwstr,但此函数将ptext_win 中的文本删除到新行的末尾,并在其位置放置c 符号。我认为在我的情况下该功能适合add_wchfamily
mvwadd_wch(ptext_win, ycount, xcount, &c);
在这种情况下会出现错误,应为const cchar_t *,而不是wint_t
如何将wint_t 字符输出到curses 窗口? cchar_t 类型是什么?
【问题讨论】:
-
mvwaddch does not suitable for wint_t请参阅man waddchCharacter set部分。call wadd_wch for characters which cannot be handled by waddch -
这能回答你的问题吗? C99 UTF8 characters with ncurses
-
@ThomasDickey,谢谢