【发布时间】:2011-06-01 08:45:55
【问题描述】:
在 C++/CLI 项目 (Visual Studio 2010) 中,将 System::String 转换为 char* 以便将其发送到系统函数以及类似地将接收到的 char* 转换为 System 的最佳方法是什么::字符串?
有没有比使用 System::Runtime::InteropServices::Marshal 类更快的方法?
【问题讨论】:
在 C++/CLI 项目 (Visual Studio 2010) 中,将 System::String 转换为 char* 以便将其发送到系统函数以及类似地将接收到的 char* 转换为 System 的最佳方法是什么::字符串?
有没有比使用 System::Runtime::InteropServices::Marshal 类更快的方法?
【问题讨论】:
char* 还是 wchar_t*? const 还是没有?如果您真正需要的是 const wchar_t*,您可以使用 vcclr.h 中的 PtrToStringChars 快速完成,这不会引起任何偷听(但是您仍然需要固定结果)。
换一种方式,你可能无法明显击败Marshal,但System::String 确实有带指针的构造函数。
【讨论】:
char*,那么无论如何您都必须进行一些复制。
pin_ptr,它会被 RAIIed。当pin_ptr 超出范围时,它会被取消固定。