utf-8, std :: wstring & ncurses - PullRequest
0 голосов
/ 01 мая 2018

Ради интереса я пишу чат-клиент на c ++ с библиотекой ncursesw. Он получает строки в кодировке 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 "). Я ожидал бы, что они появятся либо в обоих, либо в ни в одном операторе печати.

...