【发布时间】:2015-01-28 05:56:21
【问题描述】:
我需要帮助来编写正确的方法来保存文本文件的内容。到目前为止,我已经设法保存并创建了一个文本文件,但是当我打开它时,它总是空的。我正在使用 Visual Studio 2012 并使用 c++-CLI 创建一个 Windows 窗体。
这就是我所拥有的:
private: System::Void saveToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
{
IO::Stream^ myStream;
SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog;
saveFileDialog1->Filter = "txt files (*.txt)|*.txt";
saveFileDialog1->FilterIndex = 1;
saveFileDialog1->RestoreDirectory = true;
if ( saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
{
if ( (myStream = saveFileDialog1->OpenFile()) != nullptr )
{
// Code to write the stream goes here.
myStream->Close();
}
}
}
基本上,我正在尝试实现下面的代码,唯一不同的是我使用的是 c++-CLI 而不是 c#,而不是在文件中写入一些文本为 (bw.Write("Example text file." ) 确实,我希望文本文件将我的文本框值保存在我的 Windows 窗体中,例如 bw.Write(txtTextBox1->Text)。但就我而言,c++ 不使用这些相同的命令c# 可以。
SaveFileDialog sgd = new SaveFileDialog();
sfd.Filter = "Text File|*.txt";
sfd.FileName = "My Text File";
sfd.Title = "Save Text File";
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string path = sft.FileName;
BinaryWriter bw = new BinaryWriter(File.Create(path));
bw.Write("Example text file.");
bw.Dispose();
}
这是我的程序的一些图像。我还附上了一张打印预览按钮的图片。我基本上希望我的保存按钮保存一个文本文件,其中包含我的打印预览显示的内容。
【问题讨论】:
-
您可能将文件保存为 Unicode,但没有像这样读取它。
-
截图是怎么回事?它们与这个问题有什么关系?就问题而言:您可以在 C++/CLI 中编写与在 C# 中编写的完全相同的内容。那么为什么 C++ 代码看起来不像 C# 代码呢?您在 C++ 中发布的代码从未编写任何内容,因此结果是一个空文件也就不足为奇了。见stackoverflow.com/help/mcve。最后,不要忘记使用
using来处理IDisposable对象,例如您的对话框和BinaryWriter。 -
顺便说一下
BinaryWriter:即使在C#代码中,这也是值得怀疑的,因为BinaryWriter不太适合编写文本文件。请改用StreamWriter(C# 和 C++/CLI)。 -
@PeterDuniho 你能发布一个关于如何使保存按钮写入的示例。
标签: .net visual-studio visual-studio-2012 visual-c++ c++-cli