0

我正在尝试将一些双精度值写入用户通过 SaveFileDialog 创建的文本文件,但每次我执行 streamWriterVariable->Write(someDoubleVariable) 时,我都会在文本文件中看到某种奇怪的 ASCII 字符be(音符、|、版权符号等)。如果有任何意义,我会用记事本打开文件。我的代码的基本大纲:

SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog;
saveFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1->Title = "Save File Here";
saveFileDialog1->RestoreDirectory = true;
if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
{
 FileInfo ^fleTest = gcnew FileInfo(saveFileDialog1->FileName);
 StreamWriter ^sWriter = fleTest->CreateText();
 sWriter->AutoFlush = true;
 double test = 5.635; //Some arbitrary double I made up for test purposes
 sWriter->Write(test);
 sWriter->Flush();
 sWriter->Close();
}

谢谢你的帮助!

4

2 回答 2

0

您是否尝试过明确设置编码?

StreamWriter^ sWriter = gcnew StreamWriter(saveFileDialog1->FileName, false, System::Text::Encoding::ASCII);
于 2013-06-07T11:38:50.273 回答
0

您提供的代码完全符合您的要求,即以内部计算机格式将双精度写入文件。您最有可能希望它写出双精度的文本表示。

换句话说,您应该尝试sWriter->Write(test.ToString())或对此进行一些变化,以获得您的替身的文本版本。这也适用于 bool 和大多数其他变量表示。

于 2015-01-08T14:53:21.827 回答