2016-08-18 21 views
2

これは、AIRとC++の間の最初のネイティブ拡張であり、C++プログラミングでも同様です。したがって、型変換に関するヘルプをどこから探すべきかわかりません。safe uint8_tをwchar_tに変換する

AIR側から、私はuint8_t(FRE ...関数呼び出し)の文字列を受け取ります。 wchar_tが必要なレジストリに書き込むために、この文字列を使用する必要があります。 単純に型変換を行うか、同じサイズの新しいwchar []配列を作成して文字をコピーできるか、MultiByteToWideChar()のようなsometingを使用してUTF-8文字をwchar_tに変換する必要があるかどうかはわかりません。この場合、出力配列の正しいサイズについてはわかりません。あなたは `のstd :: 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

ワンダーは、STD :: 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

関連する問題