2012-01-07 77 views
2

正確。所以我試圖做到這一點:WINFORM C++託管字符串 - >非託管字符串與fstream結合時會產生意外的結果

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命令編組它轉換爲char towrite, 我再定義的非託管字符串寫入作爲焦炭towrite

我定義文件, 我創建文件, 我寫入文件a, 我關閉文件a。

當我打開文件時,我的結果通常由與我輸入的文本無關的隨機字母組成。

我假設我做錯了什麼,所以有人可以指出哪裏?

回答

1

釋放包含非託管字符串的內存,然後嘗試使用它。試試這個:

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(); 
+0

完全忘了那個。謝謝,應該已經實現了。 – Caps 2012-01-07 00:20:58

相關問題