问题描述
有一个应用程序可以生成随机文本并等待用户输入。然后将每个输入的字符与文本中的一个字符(类型训练器应用程序)进行比较,迭代文本中的每个字符。我遇到了一个 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,p);
}
}
但是函数mvwaddch
不适合wint_t
我尝试使用 mvwaddwstr
但此函数将文本从 ptext_win
删除到新行的末尾,并在其位置放置 c
符号。我认为在我的情况下,该功能适合add_wch
家庭
mvwadd_wch(ptext_win,&c);
在这种情况下会出现错误,预期为const cchar_t *
,而不是wint_t
如何将 wint_t
字符输出到 Curses 窗口?什么是 cchar_t
类型?
解决方法
mvwaddnwstr(ptext_win,ycount,xcount,&c,1);
解决我的问题...