簡體   English   中英

與fstream結合使用時,WINFORM C ++托管字符串->非托管字符串會產生意外結果

[英]WINFORM C++ Managed string->unmanaged string produces unexpected results when combined with 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,然后將非托管字符串寫入定義為char towrite

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

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

我以為我做錯了什么,所以誰能指出在哪里?

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM