2011-04-25 174 views
0

我想從系統::字符串^複製字符到矩形字符數組。如何將字符串^轉換爲2d字符數組?

首先我想:(有一些其他代碼一起不相關的問題。)

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’未處理的異常」發生了

是否有一些更簡單/更好的方法將字符串^放入(2維)char數組中,如果沒有,我在這裏做錯了什麼?

回答

0

您應該致電.ToPointer()StringToHGlobalAnsi的結果轉換爲可以轉換爲char*的結果。

您還應該致電FreeHGlobalStringToHGlobalAnsi的結果(或者您可以從char*重新創建IntPtr)。

相關問題