【问题标题】:curses: how to display a wint_t character诅咒:如何显示 wint_t 字符
【发布时间】: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 waddch Character set 部分。 call wadd_wch for characters which cannot be handled by waddch
  • 这能回答你的问题吗? C99 UTF8 characters with ncurses
  • @ThomasDickey,谢谢

标签: c ncurses curses widechar


【解决方案1】:
mvwaddnwstr(ptext_win, ycount, xcount, &c, 1);

解决我的问题...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2015-02-18
    • 2017-12-20
    • 2017-07-08
    • 1970-01-01
    相关资源
    最近更新 更多