Как определить, является ли преобразование W2A полностью успешным

Вот вы можете видеть, что при конвертации из Wide в Narrow некоторые символы могут быть заменены на ?, Как обнаружить те случаи, когда W2A преобразование применяется к строке. Конверсия туда и обратно — это способ, но не быстрый. Я предполагаю, что при преобразовании функции W2A следует как-то отметить, что преобразование не было полностью возможным. Как получить эту информацию?

РЕДАКТИРОВАТЬ: например, в случае

int WideCharToMultiByte(
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar
);

Последний аргумент говорит, что мне нужно. Как насчет W2A? Как обнаружить случай?

1

Решение

Чтобы проверить это, используйте WideCharToMultiByte непосредственно. У вас есть указание на то, что там использовался символ по умолчанию, и у вас есть флаги, которые влияют на процесс конвертации.

W2A использует тот же API с dwFlags нуля, и lpUsedDefaultChar NULL, поэтому информация, которая вам нужна, просто не запрашивается вообще.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector