WINFORM C ++ Управляемая строка-> Неуправляемая строка приводит к неожиданным результатам в сочетании с fstream - PullRequest
2 голосов
/ 07 января 2012

правый.Поэтому я пытаюсь сделать это:

    String^ ai = textBox4->Text;
char* towrite = (char*) Marshal::StringToHGlobalAnsi(ai ).ToPointer();
Marshal::FreeHGlobal(IntPtr(towrite));
string write = string(towrite);

ofstream filea;
filea.open("Logtoreadfrom.txt");
filea<< write; 
filea.close(); 

Где я пытаюсь скопировать текст из textBox4 в файл, который я создаю.

Я делаю управляемую строку "ai" втекст из текстового поля, я преобразовываю его в буксировочный символ путем маршаллинга из команды StringToHGlobalAnsi, затем я определяю неуправляемую строку write как кодировочный символ char

Я определяю filea, я создаю filea, я пишу в файл a, Я закрываю файл.

Когда я открываю файлa, мой результат обычно состоит из случайных букв, которые не имеют ничего общего с вводимым текстом.

Я предполагаю, что я делаю что-то не такКто-нибудь может указать, где?

1 Ответ

1 голос
/ 07 января 2012

Вы освобождаете память, содержащую неуправляемую строку, а затем пытаетесь ее использовать. Попробуйте это:

String^ ai = textBox4->Text;
char* towrite = (char*) Marshal::StringToHGlobalAnsi(ai ).ToPointer();
string write = string(towrite);
Marshal::FreeHGlobal(IntPtr(towrite));

ofstream filea;
filea.open("Logtoreadfrom.txt");
filea<< write; 
filea.close(); 
...