我正在尝试从终端读取宽字符串,然后将其输入。我期待像
这样的东西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 *
吗?我使用这个完全错误的吗?
答案 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
,因为没有错误。幸运的是,可用的实现使用相同的大小,因此转换应该适合您。