在C++/CLI中,将字符串数组转换为本地char**的最有效方法是什么?
我正在执行以下操作:
我正在执行以下操作:
array<String^>^ tokenArray = gcnew array<String^> {"TokenONE", "TokenTWO"};
int numTokens = tokenArray->Length;
char** ptr = new char* [numTokens];
for(int i = 0; i < numTokens; i++)
{
// See: https://dev59.com/Z1jUa4cB1Zd3GeqPWPVG
array<Byte>^ encodedBytes = Text::Encoding::UTF8->GetBytes(tokenArray[i]);
pin_ptr<Byte> pinnedBytes = &encodedBytes[0];
ptr[i] = reinterpret_cast<char*>(pinnedBytes);
}
int myResult = someNativeFunction(ptr, numTokens);
delete ptr;
// ...
有什么需要改进的吗?从内存管理的角度来看,这个是否可以?如果需要,我可以更改someNativeFunction
的参数。
谢谢。
std::string
。 - Kerrek SBpin_ptr
在使用前失效。 - Dark Falconpin_ptr
在每次for
循环迭代时都会超出作用域,从而取消固定它们的内容,因此在调用someNativeFunction
时,ptr
的每个元素都指向随机数据。 - ildjarnarray<pin_ptr<Byte>>^
来保存我在每次迭代中固定的指针,但是这是不允许的。 - OG Dude