Приветствую, форумчане. Есть ли возможность реализовать аналог MultiByteToWideChar без использования CRT и WinAPI ? Если у кого то есть готовый код - буду очень признателен.
Искать нужно по i18n, а сами языковые страницы реализовать на коленке будет большой сложностью. https://doxygen.reactos.org/d1/ddb/dll_2win32_2kernel32_2winnls_2string_2nls_8c_source.html
Спасибо) Еще не знаю, буду тестировать Вообще я не думал, что это настолько сложная задача. Изначально моя задача была вот в чем. Я беду заполненную структуру Code (Text): typedef struct _LDR_MODULE { LIST_ENTRY InLoadOrderModuleList; LIST_ENTRY InMemoryOrderModuleList; LIST_ENTRY InInitializationOrderModuleList; PVOID BaseAddress; PVOID EntryPoint; ULONG SizeOfImage; UNICODE_STRING FullDllName; UNICODE_STRING BaseDllName; ULONG Flags; SHORT LoadCount; SHORT TlsIndex; LIST_ENTRY HashTableEntry; ULONG TimeDateStamp; } LDR_MODULE, *PLDR_MODULE; Получаю ее так: Code (Text): INT_PTR mdllist = *(INT_PTR*)(peb + ModuleList); INT_PTR mlink = *(INT_PTR*)(mdllist + ModuleListFlink); INT_PTR krnbase = *(INT_PTR*)(mlink + KernelBaseAddr); LDR_MODULE *mdl = (LDR_MODULE*)mlink; [FONT=Georgia, Times New Roman, Times, serif] В итоге здесь юникод-строка. Code (Text): mdl = (LDR_MODULE*)mdl->e[0].Flink; mdl->dllname.Buffer <--- юникод( Может кто знает, как получить эти данные, только не в юникод-формате, что бы не замораиваться с конвертацией строк? Просто весь остальной код на мультибайтовых строках.[/FONT]
Конвертация UTF-16 -> UTF-8: https://github.com/sadko4u/lsp-plug...3bde538a57cd2a86/src/core/io/charset.cpp#L673 Конвертация UTF-8 -> UTF-16: https://github.com/sadko4u/lsp-plug...3bde538a57cd2a86/src/core/io/charset.cpp#L735 Вообще, задача становится весьма нетривиальной, если нужно поддерживать ВСЕ кодировки, и сводится к тому дереву вызовов, которое представил f13nd .
piligmindo, да если вы уверены что там будет только ASCII то можно и ручками конвертнуть. Без монструозных вызовов.