如何读取然后写回一个宽字符串?

时间:2016-09-13 09:12:59

标签: c++ ncurses

我正在尝试从终端读取宽字符串,然后将其输入。我期待像

这样的东西
wchar_t input[32];
getn_wstr(input, sizeof(input) -1);
mvaddwstr(1, 0, input);

上班。除了它甚至没有编译。原来,getn_wstr需要wint_t *mvaddwstr需要wchar_t *

我不希望这么简单的事情如此困难。我在这里使用错误的功能吗?我真的必须从wint_t *转换为wchar_t *吗?我使用这个完全错误的吗?

1 个答案:

答案 0 :(得分:0)

根据ncurses manual page

  

单Unix规范,版本2 中描述了这些功能。没有定义错误条件。这个   如果窗口指针为null,则实现返回 ERR ,   或者,如果较低级别的wget_wch调用返回 ERR 。在   在后一种情况下,没有其他数据的 ERR 返回   作为文件结束条件处理,返回的数组包含 WEOF ,后跟空 wchar_t

     

X / Open curses记录这些函数以传递数组    wchar_t ,但所有供应商都使用此功能   的 wint_t

在检查Solaris,AIX,Tru64和HPUX之后,该注释可追溯到2002年。有一个例外(SCO)似乎并不重要。

宽字符的输入函数返回wint_t,因为它们必须表示这些值中的错误条件。输出函数使用wchar_t,因为没有错误。幸运的是,可用的实现使用相同的大小,因此转换应该适合您。