Как получить String ^ в массив 2d char? - PullRequest
0 голосов
/ 25 апреля 2011

Я пытаюсь скопировать символы из 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-мерный) массив символов, и если нет, то что я здесь не так делаю?

1 Ответ

0 голосов
/ 25 апреля 2011

Вы должны звонить .ToPointer(), чтобы преобразовать результат StringToHGlobalAnsi во что-то, что вы можете затем преобразовать в char*.

Вы также должны позвонить FreeHGlobal по результату StringToHGlobalAnsi (или вы можете воссоздать IntPtr из вашего char*).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...