Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: [C++] Вывод в файл  (Прочитано 5953 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
The Nameless One
Помогающий

ru
Offline Offline
Пол: Мужской

« : 18-08-2009 10:21 » 

Привет:)

Вывожу в файл массив вещественных чисел так:
Код:
#include <fstream>
using namespace std;

int main()
{
ofstream file("Text.txt", ios::out);
float F[]={45.6f, 632.36f, 1141.1f, 414.f, 12490.1240f};
for(int g=0; g<sizeof(F)/sizeof(float); g++) file.write((char*)F, sizeof(F));
file.close();
return 0;
}

В результате в фале такая милиберда:
Цитата
ff6B
D3ЈЋD  ПC(CFff6B
D3ЈЋD  ПC(CFff6B
D3ЈЋD  ПC(CFff6B
D3ЈЋD  ПC(CFff6B
D3ЈЋD  ПC(CF

Что я не так делаю?
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 18-08-2009 11:00 » new

Выводить пытаешься числа, но зачем-то делаешь это через write, приводя к последовательности символов. float - это ни разу не последовательность символов (точнее, это будет очень плохая последовательность символов, состоящая из мусора). Массив float-ов, соответственно, тоже.
Попробуй
Код:
for (int i = 0; i < sizeof(F)/sizeof(float); ++i)
    file << F[i] << endl;
Для начала. Форматирование значений - несколько отдельная тема.
« Последнее редактирование: 18-08-2009 11:05 от Вад » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 18-08-2009 11:10 » 

The Nameless One, получается двойчный файл, в котором числа хранятся в их двоичном представлении как последовательность байтов.

Обратно их можно прочитать с помощью read.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 18-08-2009 11:15 » 

Кстати, да Улыбаюсь Что-то я с текстовыми файлами заработался Улыбаюсь Но если нужен бинарный файл - его нужно и открывать в бинарном режиме. То есть, открывать с флагом ios_base::binary, если мне память не изменяет. По умолчанию режим текстовый. И цикл для записи тогда не нужен - и так в один присест весь массив записывается: file.write((char*)F, sizeof(F)).
« Последнее редактирование: 18-08-2009 11:16 от Вад » Записан
The Nameless One
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 18-08-2009 11:32 » 

Спасибо - разобрался!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines