2016-08-18 11 views
2

이것은 AIR과 C++ 간의 첫 번째 기본 확장이며 C++ 프로그래밍에서도 마찬가지입니다. 따라서 유형 변환에 대한 도움말을 어디서 찾을 지 잘 모릅니다.safe uint8_t를 wchar_t로 변환합니다.

AIR 쪽에서는 uint8_t (FRE ... 함수 호출)에서 문자열을 수신합니다. 레지스트리에 쓰기 위해이 문자열을 사용할 필요가 있습니다. 여기서 wchar_t가 필요합니다. 단순히 형 변환을하거나 같은 크기의 새로운 wchar [] 배열을 만들고 문자를 복사 할 수 있는지 또는 MultiByteToWideChar()와 같은 someting을 사용하여 UTF-8 문자를 wchar_t로 변환해야하는지 잘 모르겠습니다. 이 경우 올바른 출력 배열 크기에 대해서는 확실하지 않습니다. 당신은`표준 : stringstream`에 바이트 배열을 기록 할 수있는 경우

... 
 
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)) \t 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); 
 
...

+0

원더, 표준 : basic_ios :: imbue''와 UTF8하기 이제 stringstream의 로케일을 설정하고, 'wchar'로 다시 읽습니다. 작동한다면 잔인하게 사용하기 쉽습니다. – user4581301

답변

1
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> cv; 
std::wstring dst = cv.from_bytes(src); 
+0

감사합니다. 그것은 나를 도왔다. 죄송합니다. 이사회의 새로운 꿀벌은 답변을 평가할 수 없습니다. – sorrex