我正在尝试将字符从System :: String ^复制到矩形字符数组。
首先我尝试了:(以及其他一些与问题无关的代码)
char name[25][21];
...
void savedata(int x, System::String ^ a){ //x is the student #, a is the name
int b;
using namespace System::Runtime::InteropServices; // for class Marshal
char* buffer((char*)(void*)Marshal::StringToHGlobalAnsi(a));
x--; //So we write buffer[b] at data[0][b] when int x is 1
for(b = 0; b < 21; b++){
data[x][b] = buffer[b];
};
}
当我尝试运行并调试它时,“发生了'System.AccessViolationException'类型的未处理异常”
是否有一些更容易/更好的方法将String ^放入(2维)char数组中,如果没有,我在这里做错了什么?
答案 0 :(得分:0)
您应该致电.ToPointer()
将StringToHGlobalAnsi
的结果转换为可以转换为char*
的内容。
您还应该对FreeHGlobal
的结果致电StringToHGlobalAnsi
(或者您可以从IntPtr
重新创建char*
。