Я видел несколько других сообщений по этой проблеме, но не смог найти каких-либо подробностей о том, как программно определить, использует ли кодовая точка более одного 2-байтового (в Windows) wchar_t.
Пример:
const wchar_t* s2 = L"\U0002008A"; // The "Han" character
std::wstring in(s2); // length() == 2
Я хотел бы знать, как определить, когда символ будет иметь длину ()> 1.
Любая кодовая точка выше U + FFFF использует суррогаты в своей кодировке UTF-16. Суррогатные значения находятся в диапазоне D800-DFFF.
Других решений пока нет …