为了好玩,我正在用ncursesw库用c ++编写一个聊天客户端。 它接收具有特殊字符的UTF-8编码字符串。 现在,如果我这样做:
const char *temp = "><\n";
wprintw(win -> win, temp);
然后它显示正常。
如果我先将其转换为wstring(进行进一步的中间处理),然后使用ncursesw的宽字符功能打印它,那么它会显示一个空格:
#include <codecvt>
#include <locale>
...
const char *temp = u8"><\n";
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring wstr = converter.from_bytes(temp);
waddwstr(win, wstr.c_str());
我在这里做错了什么?
谢谢!
情节变粗:某些角色会出现,就像U + 00E4(a“)一样。 我希望它们既可以出现在两者中,也可以出现在两种打印声明中。