我试图写一些双值用户通过SaveFileDialog创建的文本文件,但每次我做一个streamWriterVariable->写(someDoubleVariable),我反而看到某种奇怪的ASCII字符在文本文件中,双应该是(音符,|,版权符号等)。我在用记事本打开文件如果有什么重要的。我的代码的基本轮廓:
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();
}
谢谢你的帮助!
您是否尝试过显式设置编码?
StreamWriter^ sWriter = gcnew StreamWriter(saveFileDialog1->FileName, false, System::Text::Encoding::ASCII);
您提供的代码完全按照您的要求完成了任务,即以内部计算机格式向文件写入双精度对象。您最有可能希望它写出双精度数的文本表示形式。
换句话说,您应该尝试sWriter->Write(test.ToString())
或其变体,以获得double的文本版本。这也适用于bool和大多数其他变量表示。