C2005中System::String转换为std::string

http://msdn.microsoft.com/zh-cn/library/1b4az623%28VS.80%29.aspx

 

可以在不使用 Vcclr.h 中的 PtrToStringChars 的情况下将 String 转换为 std::stringstd::wstring

示例

复制
// convert_system_string.cpp
// compile with: /clr
#include <string>
#include <iostream>
using namespace std;
using namespace System;

void MarshalString ( String ^ s, string& os ) {
using namespace Runtime::InteropServices;
const char* chars =
(const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
os = chars;
Marshal::FreeHGlobal(IntPtr((void*)chars));
}

void MarshalString ( String ^ s, wstring& os ) {
using namespace Runtime::InteropServices;
const wchar_t* chars =
(const wchar_t*)(Marshal::StringToHGlobalUni(s)).ToPointer();
os = chars;
Marshal::FreeHGlobal(IntPtr((void*)chars));
}

int main() {
string a = "test";
wstring b = L"test2";
String ^ c = gcnew String("abcd");

cout << a << endl;
MarshalString(c, a);
c = "efgh";
MarshalString(c, b);
cout << a << endl;
wcout << b << endl;
}

你可能感兴趣的:(C2005中System::String转换为std::string)