2012-01-07 68 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

相关问题