如何将String ^转换为2d char数组?

时间:2011-04-25 19:16:42

标签: visual-c++

我正在尝试将字符从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数组中,如果没有,我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您应该致电.ToPointer()StringToHGlobalAnsi的结果转换为可以转换为char*的内容。

您还应该对FreeHGlobal的结果致电StringToHGlobalAnsi(或者您可以从IntPtr重新创建char*