我试图通过SaveFileDialog为用户创建的文本文件写一些double值,但每次我执行streamWriterVariable-> Write(someDoubleVariable)时,我都会看到某种奇怪的ASCII字符。 double应该是的文本文件(音符,|,版权符号等)。我用记事本打开文件,如果它有任何意义。我的代码的基本概要:
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();
}
感谢您的帮助!
答案 0 :(得分:0)
您是否尝试过明确设置编码?
StreamWriter^ sWriter = gcnew StreamWriter(saveFileDialog1->FileName, false, System::Text::Encoding::ASCII);
答案 1 :(得分:0)
您提供的代码完全符合您的要求,即以内部计算机格式将文件写入双重文件。您最有可能希望它写出双重文本表示。
换句话说,您应该尝试sWriter->Write(test.ToString())
或对此进行一些修改,以获得双倍的文本版本。这也适用于bool和大多数其他变量表示。