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