StreamWriter麻烦写双打到.txt文件(C ++)

时间:2013-06-03 18:06:40

标签: io c++-cli streamwriter streamwriter.write

我试图通过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();
}

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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