Visual C++ .NETでSystem::String^とchar*の相互回転
3221 ワード
Visual C++を使用する.NETの管理拡張システム::String^からchar*に変換するいくつかの方法.
方法1
StringToHGlobalAnsi
Stringオブジェクトを管理するコンテンツをネイティブ・スタックにコピーし、動的にアメリカ国立標準学会(ANSI)フォーマットに変換します.このメソッドでは、必要なネイティブ・スタック・メモリが割り当てられます.
方法1
StringToHGlobalAnsi
Stringオブジェクトを管理するコンテンツをネイティブ・スタックにコピーし、動的にアメリカ国立標準学会(ANSI)フォーマットに変換します.このメソッドでは、必要なネイティブ・スタック・メモリが割り当てられます.
//using namespace System::Runtime::InteropServices;
char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
printf(str2);
Marshal::FreeHGlobal( IntPtr(str2) );
2
VC7
CString
, String CString :
//#include
System::String ^ str = "Hello world
";
CString str3( str );
printf(str3);
--------------------------------------- char * String^ ------------------------
const char * p = " ";
String ^ MyStr = Marshal::PtrToStringAnsi((IntPtr)(char *)p);
Console::WriteLine(MyStr);
//compiler option:cl /clr
#include
#include
#include
#using
using namespace System;
using namespace System::Runtime::InteropServices;
int _tmain(void)
{
System::String ^str = "Hello world
";
//method 1
char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
printf(str2);
Marshal::FreeHGlobal( IntPtr(str2) );
//method 2
CString str3(str);
printf(str3);
const char * p = " ";
String ^ MyStr = Marshal::PtrToStringAnsi((IntPtr)(char *)p);
Console::WriteLine(MyStr);
return 0;}