2013-06-03 7 views
0

Я пытаюсь записать некоторые двойные значения в текстовый файл, создаваемый пользователем с помощью SaveFileDialog, но каждый раз, когда я создаю streamWriterVariable-> Write (someDoubleVariable), вместо этого я вижу какой-то странный символ ASCII в текстовом файле, где должен быть двойной (нота, символ, символ авторского права и т. д.). Я открываю файл с помощью блокнота, если он имеет какое-либо значение. Основной контур моего кода:Проблема с записью 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), он работает. Если я пишу (double), за которым следует любая запись («строка»), она испортится, в дополнение к любой записи (строка), за которой следует запись (double). Излишне говорить, что ваш совет привел меня к решению, так что спасибо! Для дальнейшего использования у меня было две ошибки при попытке вашего объявления: один, он утверждал, что ANSI не был типом кодировщика, а два, он сказал, что он не ожидал значения bool для второго пятна в параметре. Спасибо хоть! – Nate

+0

К сожалению, я имел в виду System :: Text :: Encoding :: ASCII. Вы пытались открыть полученный файл с помощью расширенного текстового редактора, такого как Notepad ++? Кроме того, файл всегда создается с нуля, т. Е. Удаляется перед любой новой записью? – Pragmateek

0

код вы предоставили именно то, что вы просите его, то есть написать дважды в файл во внутреннем формате компьютера. Скорее всего, вы захотите написать текстовое представление двойника.

Другими словами, вы должны попробовать sWriter->Write(test.ToString()) или некоторые вариации над этим, чтобы получить текстовую версию вашего двойника. Это также относится к bool и большинству других переменных представлений.

 Смежные вопросы

  • Нет связанных вопросов^_^