Это мое самое первое собственное расширение между AIR и C ++, а также в программировании на C ++, поэтому я не уверен, где искать помощь по преобразованию типов.
Со стороны AIR я получаю строку в uint8_t (FRE … вызов функции). Мне нужно использовать эту строку для записи в реестр, где ожидается wchar_t.
Я не уверен, смогу ли я просто сделать приведение типов, или создать новый массив wchar [] того же размера и скопировать символы, или мне нужно использовать что-то вроде MultiByteToWideChar () для преобразования символов UTF-8 в wchar_t. Я не уверен в правильном размере выходного массива в этом случае.
...
FREObject retObj = NULL;
uint32_t strLength = 0;
const uint8_t *path8 = NULL;
// this is what I get from actionscript call
FREResult status = FREGetObjectAsUTF8(argv[ARG_PATH], &strLength, &path8);
if ((status != FRE_OK) || (strLength <= 0) || (path8 == NULL)) return retObj;LONG hStatus;
HKEY hKey;
wchar_t *path;
// ??? how to copy uint_t into wchar_t
hStatus = RegOpenKeyEx(HKEY_CURRENT_USER, path, 0, KEY_ALL_ACCESS, &hKey);
...
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> cv;
std::wstring dst = cv.from_bytes(src);
Других решений пока нет …