VS2005 C++/CLI で、アンマネージなライブラリを使う場合、ライブラリの関数の引数がアンマネージな文字列型(char*, wchar_t*, LPSTR, LPWSTR)の時がある。そんな時に必要な変換。
wchar_t dstWchar_t[100];
ってすればよい。
using namespace System::Runtime::InteropServices; //Marshal使うから //変換元 String ^srcStr = "Hello"; //char* char* dstChar; dstChar = (char*)(void*)Marshal::StringToHGlobalAnsi(srcStr); //wchar_t* wchar_t *dstWchar_t; int strLen = srcStr->Length; dstWchar_t = (wchar_t*)malloc((strLen+1)*sizeof(wchar_t)); for(int i = 0 ; i < strLen ; i++) { dstWchar_t[i] = srcStr[i]; } dstWchar_t[strLen] = '\0'; //LPSTR LPSTR dstLPSTR; dstLPSTR = (LPSTR)dstChar; //LPWSTR LPWSTR dstLPWSTR; dstLPWSTR = (LPWSTR)dstWchar_t;wchar_t* への変換だが、文字数が高々知れてるのならば、malloc を使わずに
wchar_t dstWchar_t[100];
ってすればよい。
コメントする