Существует ли прямой способ управления строками C ++ / CLI в оболочке с параметром char * для собственного метода C ++?!
пример:
void Test::TestFunc(System::String ^%str)
{
// right conversion to char* and consider the reference
}
собственная функция C ++:
void TestB::Func(char *str)
{
...
}
Мой хитрый путь:
void Test::TestFunc(System::String ^%szRecvBuffer)
{
pin_ptr<const wchar_t> szRecvBufferP = PtrToStringChars(szRecvBuffer);
// Convert to a char*
size_t origsize = wcslen(szRecvBufferP) + 1;
const size_t newsize = 100;
size_t convertedChars = 0;
char nstring[newsize];
wcstombs_s(&convertedChars, nstring, origsize, szRecvBufferP, _TRUNCATE);
strcat_s(nstring, " (char *)");
char *szRecvBufferCh = nstring;
m_object->TestCommand(szRecvBufferCh); // parameter char*
System::String ^tmp = gcnew System::String(szRecvBufferCh);
szRecvBuffer = tmp;
}
привет Леон 22 * 1012 *