在 C++/CLI 中从 char* 转换为 System::string 并返回的批准方法是什么?我在 Google 上发现了一些对 marshal_to<> 模板化函数的引用,但似乎该功能从未适用于 Visual Studio 2005(据我所知,Visual Studio 2008 中也没有)。我还在Stan Lippman's blog上看到了一些代码,但那是2004年的事了。我也见过Marshal::StringToHGlobalAnsi()。有没有一种方法被认为是“最佳实践”?
最佳答案
System::String 有一个接受 char* 的构造函数:
using namespace system;
const char* charstr = "Hello, world!";
String^ clistr = gcnew String(charstr);
Console::WriteLine(clistr);
取回 char* 有点困难,但也不算太糟糕:
IntPtr p = Marshal::StringToHGlobalAnsi(clistr);
char *pNewCharStr = static_cast<char*>(p.ToPointer());
cout << pNewCharStr << endl;
Marshal::FreeHGlobal(p);
关于.net - 在 C++/CLI 中 char* 和 System::String 之间转换的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56561/