Форум программистов, компьютерный форум CyberForum.ru

Запись класса в файл - C++

Восстановить пароль Регистрация
 
Russian_Dragon
 Аватар для Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
12.05.2012, 06:39     Запись класса в файл #1
Приветствую.
Я хочу записать битовую форму класса, но столкнулся с делемой.
Насколько мне известно, есть две группы функций записи битов в файл:
1)
_wsopen_s
_read
_write
_filelength
_tell
_lseek
_chsize
_close

2)
fopen_s
fwrite
fread
fclose

Кто знает в чем разница? И что лучше использовать.

П.с.
И еще один вопрос: Кто знает где можно почитать о битовом представлении файлов. Т.е. как, например, программы догадываются, что изображение имеет формат jpg, а не png несмотря на расширение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2012, 06:39     Запись класса в файл
Посмотрите здесь:

C++ Запись данных класса в файл
C++ Дописать в файл запись пользовательского класса
ООП. header файл. Функцию объекта вынести в файл класса C++
C++ Запись в собственного класса бинарный файл собственного
C++ Запись класса в файл
C++ Запись экземпляра класса в файл
C++ Не работает метод класса (запись и чтение в файл)
Запись объекта класса в файл C++
C++ Запись и чтение объектов класса в файл С ++
C++ Запись в файл объекта класса
C++ Запись класса в двоичный файл
Запись в файл данных из обьекта класса C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
12.05.2012, 08:39     Запись класса в файл #2
Раз используются классы, то лучше использовать fstream. Это типа третьей группы.
Russian_Dragon
 Аватар для Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
12.05.2012, 08:43  [ТС]     Запись класса в файл #3
Цитата Сообщение от Deviaphan Посмотреть сообщение
Раз используются классы, то лучше использовать fstream. Это типа третьей группы.
3)
ifstream ifs
ifs.open
ifs.fail
ifs.eof
<<
>>
ifs.close

Мне такой вариант совсем не нравиться, т.к. неудобно писать туда биты, только стразу целые переменные. Выше приведенные функции, гораздо удобнее отношении побитовой записи.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
12.05.2012, 08:57     Запись класса в файл #4
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
т.к. неудобно писать туда биты, только стразу целые переменные
Операторы << и >> нельзя использовать при двоичной записи в файл, поэтому нужно использовать те же ifstream.read и ofstream.write.
Ни в одном из трёх вариантов нельзя записывать биты, только байты можно.
Russian_Dragon
 Аватар для Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
12.05.2012, 09:06  [ТС]     Запись класса в файл #5
Цитата Сообщение от Deviaphan Посмотреть сообщение
Операторы << и >> нельзя использовать при двоичной записи в файл, поэтому нужно использовать те же ifstream.read и ofstream.write.
Хорошо, спасибо, попробуем с этим вариантом поиграть.

Цитата Сообщение от Deviaphan Посмотреть сообщение
Ни в одном из трёх вариантов нельзя записывать биты, только байты можно.
ну, да, байты.


Не по теме:

Но вопрос, про форматы файлов, пока открыт:
Кто знает где можно почитать о битовом представлении файлов. Т.е. как, например, программы догадываются, что изображение имеет формат jpg, а не png несмотря на расширение.

Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
12.05.2012, 09:45     Запись класса в файл #6
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
jpg, а не png
В начале файла (чаще всего) записаны несколько байт, которые идентифицируют формат. Внутреннее представление разных форматов разное и смотреть нужно каждый по отдельности. Например, в википедии.
Yandex
Объявления
12.05.2012, 09:45     Запись класса в файл
Ответ Создать тему
Опции темы

Текущее время: 04:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru