![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
TGrey |
|
||||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Здравствуйте, увидел непонятный для себя код, нашел его в нэте стало понятно для чего он.
Вот теперь пробую поэксперементировать с ним, но, что-то неочень выходит. Суть такова: Запись в файл Класов и Структур.
Написал свой тестовый клас:
Таким образом производится запись в файл. Дальше самом собой нужно получить єту инфу из файла:
Таким образом выводятся данные введеные в файл в предидущем коде вроде все нормально, но смущает несколько вещей: Если закоментировать
тогда я получаю на экране
Что-то не то... Думал поможет конструктор в классе, но в итоге:
Вот собственно и вопрос, почему так происходит... Зачем нужно обязательно заполнять дч класса и и менно в мэйне. |
||||||||||||
|
|||||||||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
TGrey, фишка в том, char* - это указатель, т.е это 4 байта(вне зависимости от длины самой строки)... Как думаешь, можно ли по 4-м байтам восстановить всю строку(длиною, к примеру, в 100 символов)?
То что ты пытаешь сделать называет сериализацией(и последующей десериализацией) и эта проблема не решается одной строкой(к примеру, есть целая библиотека в Boost с соответствующим названием)... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Полазил в нэте толком ничего не нашел, но успел догадатся, что на данный момент это не для моего ума дела. А жалко, походу полезная вещь.
|
|||
|
||||
MHz |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.5.2008 Репутация: нет Всего: нет |
для структур можно сделать следующее:
структура будет записана на диск. но это варварский метод =))) с классами все намного сложнеее - придется либо в класс включать код сериализации/десериализации, либо писать сериализатор, что намного сложнее. Это сообщение отредактировал(а) MHz - 1.5.2008, 11:51 |
|||
|
||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Говорю же, пока, это не для меня)))
|
|||
|
||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Ммм ладно, а все же какой тогда другой есть метод для сохранения Класов и Структур которой я бы смог понять(я только начал изучать работу с файлами).
Ну и само собой удобном извлечении информации из файла. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Ну, начни с того, что разберись с тем, что такое строка в С++. Попробуй их покопировать, динамически по создавать и т.д. Потом попробуй записать просто строку в файл. Потом считать её и вывести на экран. Короче говоря, программирование осваивается поэтапно. Этапы для данной проблемы я вроде очертил. Если есть желание действительно разобраться и научиться, то всегда рад буду подсказать. В данном разделе, в категории "статьи" есть статья о "строках, классах и чём-то ещё" - начни с прочтения этой статьи. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
TGrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Уже начал)) Ну я в общем работал с строками, а именно char *. Но единственное, что не помешает - выучить функции для их обработки, сравнение, контактинация, копирование...
Просто сейчас уже пошлло обучение работы с файлами, а я его даже не начинал учить. Вот и получилось так, что на лабараторной в программе я встретил участок кода из первого поста, но ни я сам ничего не понял ни преподователь несмог объяснить т.к. сама взяла его из книги по С++. А тут теперь еще и узнаю, что им пока лучше не пользоватся)) Вот весело получается прийдется классы писать по отдельности каждый эллемент. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |