所以我有这个方法返回一个char指针:
Private: char* currentSelectedDevice()
{
String^ comboboxText = counterComboBox->Text;
marshal_context ^ context = gcnew marshal_context();
char* temp;
cont char* convertedString = context->marshal_as<const char*>(comboboxText);
temp = const_cast<char *>(convertedString);
char* oneCounterPort = strtok (temp, " =");
return oneCounterPort;
}
我想要实现的是将此方法复制到char数组中。我正在考虑使用for循环,但这并不是我想要的。那我怎么能这样做呢?
我在想这样的事情可能有用:
char temp[sizeof(currentSelectedDevice())] = currentSelectedDevice();
答案 0 :(得分:1)
您可以使用Marshal::Copy
。你的functoin看起来像这样:
#include <stdlib.h> // In case you use C (for malloc() access)
// C++/CLI function
char * currentSelectedDevice()
{
String^ comboBoxText = counterComboBox->Text;
// Allocate unmanaged memory:
char *result = (char*)malloc(comboBoxText->Length);
// Copy comboBoxText to result:
Marshal::Copy( comboBoxText ->ToCharArray(), 0, IntPtr( (char*) result ), comboBoxText->Length );
return result;
}
它将comboBoxText
的内容(注释此处ToCharArray()
的来电)从位置0
复制到comboBoxText.Length
到result
}。
然后调用C
函数将是可以像这样使用它:
// Calling C function
void read_combo_box_text()
{
// Get text:
char * cbxText = currentSelectedDevice();
// .. Do something with it
// Free (if don't needed anymore)
free(cbxText);
}
希望这有帮助。
注意:如果您为C++
执行此操作,请不要包含stdlib.h
并将malloc()
替换为new
和{{1} } free()
。