[メモ] System::String^ → char*, wchar_t*, LPSTR, LPWSTR への変換 (C++/CLI)

| | コメント(0) | トラックバック(0)
VS2005 C++/CLI で、アンマネージなライブラリを使う場合、ライブラリの関数の引数がアンマネージな文字列型(char*, wchar_t*, LPSTR, LPWSTR)の時がある。そんな時に必要な変換。
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];
ってすればよい。

トラックバック(0)

このブログ記事を参照しているブログ一覧: [メモ] System::String^ → char*, wchar_t*, LPSTR, LPWSTR への変換 (C++/CLI)

このブログ記事に対するトラックバックURL: http://morotyo.sakura.ne.jp/mt/mt-tb.cgi/12

コメントする

このブログ記事について

このページは、morotyoが2006年7月15日 00:05に書いたブログ記事です。

ひとつ前のブログ記事は「[メモ] SmartOCR Lite Edition」です。

次のブログ記事は「[メモ] ボーカルリデューサー」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

プロフィール

profile.jpg

モローチョ(morotyo)

Webエンジニア。

詳しいプロフィール

このblogのはてブ(旧ドメイン)

このblogのはてブ

Powered by Movable Type 4.1