来自数组<char> ^ class </char>的WriteFile

时间:2015-02-05 09:47:31

标签: arrays textbox c++-cli writefile

我正在尝试从VC ++中的textBox写入文本文件,但是文件中写入的数据不正确,而且每次都不同。

DWORD wmWritten;
textBox1->Text = "7.5";

array<Char>^ char_array1 = textBox1->Text->ToCharArray();

HANDLE hFile = CreateFile(L"C:\\MyData\\Performance\\info.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

BOOL bErrorFlag = WriteFile(hFile, &char_array1, (DWORD)(sizeof(char_array1)), &wmWritten, NULL);

结果:Œó -

有什么问题?

1 个答案:

答案 0 :(得分:0)

@Alex说:

  

如果没有必要,请不要混合托管和非托管类型

我无法达成一致。托管类是.NET类,由垃圾收集等处理。非托管类或本机类是传统的C ++类,您必须管理所有内存。

在这种情况下,您可以使用托管代码执行所有操作。浏览C#网页,了解如何输出到文件,然后在C ++ / CLI中编写相应的代码。

例如,此链接在此处:

https://msdn.microsoft.com/en-us/library/system.io.file(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-2

是我通过谷歌搜索找到的东西&#34; C#File IO&#34;。您可以单击那里的选项卡以查看C#中的代码片段或C ++中的代码片段(这里是C ++ CLI)。基本上,你想要这个:

String^ path = "c:\\temp\\MyTest.txt";
if (  !File::Exists( path ) )
 {

   // Create a file to write to.
   StreamWriter^ sw = File::CreateText( path );
   try
   {
      //sw->WriteLine( "Hello" );
      //sw->WriteLine( "And" );
      //sw->WriteLine( "Welcome" );
      sw->Write(textBox1->Text);
   }
   finally
   {
      if ( sw )
               delete (IDisposable^)(sw);
   }
}