У меня есть устаревший код, который работает с преобразованиями UTF8 / 16 и wstream-s. Он был написан на VS08-VS10 и предполагает, что тип mbstate_t
- int
. Он использует его для проверки некоторых состояний, таких как
while(_State & 0x80000000 && ...)
и
unsigned n = _State & 0x7FFFFFFF;
if(n<=0x3F)...
Но теперь мне нужно скомпилировать его с современной Visual Studio, и там mbstate представлен как структура:
typedef struct _Mbstatet
{ // state of a multibyte translation
unsigned long _Wchar;
unsigned short _Byte, _State;
} _Mbstatet;
Могу догадаться, что нужно использовать поле _State
во всех представленных выше операциях. Но это всего лишь 16 бит, тогда как в моем наследии он используется с 32-битными константами. Я пытаюсь найти документацию по этому поводу, но пока не добился успеха. Кто-нибудь сталкивался с этим?