2013-06-03 61 views
0

我想写一些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(); 
} 

感谢您的帮助!

回答

0

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

StreamWriter^ sWriter = gcnew StreamWriter(saveFileDialog1->FileName, false, System::Text::Encoding::ASCII); 
+0

因此明确地没有完全解决这个问题,但它提供了一种解决方案:当我明确地编码并且只写入writeLine(double)时,它起作用。如果我写(双),然后写任何(“字符串”)它除了任何写(字符串),然后写(双)以外,它会混淆。不用说,尽管你的建议让我得到了一个解决方案,所以谢谢你! 为了将来的参考,我在尝试声明时遇到了两个错误:一个声称ANSI不是编码器类型,另外两个声称它不希望参数中第二个点的布尔值。虽然谢谢! – Nate

+0

糟糕我的意思是System :: Text :: Encoding :: ASCII。你有没有试图用像Notepad ++这样的高级文本编辑器打开生成的文件?此外,文件总是从头开始创建,即在任何新的写入之前删除? – Pragmateek

0

您所提供的代码做你要求它到底该怎么,那就是写一个双到文件中的内部计算机的格式。你最希望它写出双倍的文本表示。

换句话说,你应该尝试sWriter->Write(test.ToString())或其他一些变化,以获得你的双重文本版本。这也适用于布尔和大多数其他变量表示。