我想写一些double值给用户通过SaveFileDialog创建的文本文件,但是每次我做streamWriterVariable-> Write(someDoubleVariable)时,我都会看到一些奇怪的ASCII字符在文本文件中应该是double(音符,|,版权符号等)。如果它有任何意义,我将用记事本打开文件。我的代码基本轮廓:StreamWriter写入双向.txt文件时出现问题(C++)
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();
}
感谢您的帮助!
因此明确地没有完全解决这个问题,但它提供了一种解决方案:当我明确地编码并且只写入writeLine(double)时,它起作用。如果我写(双),然后写任何(“字符串”)它除了任何写(字符串),然后写(双)以外,它会混淆。不用说,尽管你的建议让我得到了一个解决方案,所以谢谢你! 为了将来的参考,我在尝试声明时遇到了两个错误:一个声称ANSI不是编码器类型,另外两个声称它不希望参数中第二个点的布尔值。虽然谢谢! – Nate
糟糕我的意思是System :: Text :: Encoding :: ASCII。你有没有试图用像Notepad ++这样的高级文本编辑器打开生成的文件?此外,文件总是从头开始创建,即在任何新的写入之前删除? – Pragmateek