Тёмный

Запись ОБЪЕКТА КЛАССА в файл с++. Чтение объекта из файла c++ Для начинающих. Урок  

#SimpleCode
Подписаться 368 тыс.
Просмотров 149 тыс.
50% 1

Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
Работа с файлами с++. Запись в файл. c++ ofstream. Изучение С++ для начинающих. Урок #115
goo.gl/b7bzup
Работа с файлами с++. Чтение из файла с++ ifstream. Изучение С++ для начинающих. Урок #116
goo.gl/DRoSXS
Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут! =)
www.donationalerts.ru/r/simple...
или тут
/ simplecode
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit

Опубликовано:

 

2 дек 2017

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 174   
@SimpleCodeIT
@SimpleCodeIT 6 лет назад
*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
@efimlos
@efimlos 6 лет назад
Где ссылки на сырцы? по мойму это не прозвучало, что вы по сути изменяете один обьект а не создайте три. ихмо это важно.
@game_cx
@game_cx 4 года назад
Для чего писать ofstream fout; и ofstream::app если и fstream... работает? Ну лично у меня
@user-bo8kh6zf1j
@user-bo8kh6zf1j 4 года назад
@@game_cx урок fstream следующий в плейлисте
@user-ci2ku2oo5u
@user-ci2ku2oo5u 6 лет назад
Огонь!!! Давно искала информацию по сохранению объектов с нормальными разъяснениями. Спасибо большое, наконец сдвинулась с мертвой точки!
@user-qp8bt7gq4b
@user-qp8bt7gq4b 4 года назад
ОЧЕНЬ ВАЖНО: Способ рабочий только для простейший структур. Если есть хоть одно поле string в структуре, работать не будет. Можно конечно сделать вместо string массив из char, но тогда все преимущества строк пропадают.
@dilivolker6135
@dilivolker6135 2 года назад
Самый полезный комментарий
@calamitydeadshot3143
@calamitydeadshot3143 2 года назад
А каким образом это можно преодолеть? Есть ли какие-то другие способы сохранить объект в класс или нужно с нуля писать методы сохранения?
@user-qp8bt7gq4b
@user-qp8bt7gq4b 2 года назад
@@calamitydeadshot3143 почитайте что такое JSON или XML
@vladyslavkryvoruchko
@vladyslavkryvoruchko Год назад
Проблема в том, что в файл сохраняется не поле строчки, а указатель на поле строчки. Естественно, при считывании по том адресу уже этой строчки возможно и нет.
@user-sh2pv2cb5b
@user-sh2pv2cb5b Год назад
@@vladyslavkryvoruchko о, получается, проблема при наличии любых данных в куче, а не только string. Сохраняются адреса, но не сами данные. Теперь надо думать, как сливать данные в файл из памяти. Спасибо за разъяснение.
@GenameSalim
@GenameSalim 5 лет назад
Благослови тебя Господь. Благодарю за уроки!)
@endlessvd
@endlessvd Год назад
бога нет
@AsdfgAsdfg12363
@AsdfgAsdfg12363 Год назад
@@endlessvd по любому "создатель" непременно существует.
@endlessvd
@endlessvd Год назад
@@AsdfgAsdfg12363 ну значит ты открыл только что физику, в частности теорию относительности и квантовую механику. Их действительно можно назвать нашими создателями, а все остальное ерунда
@saintnikija7821
@saintnikija7821 Год назад
@@endlessvd не будь душнилой, задрот
@SimpleCodeIT
@SimpleCodeIT 6 лет назад
#работасфайлами #ofstream #ifstream #SimpleCode #урокипрограммирования
@vladalu9794
@vladalu9794 6 лет назад
Этот урок прям вообще супер, спасибо большое, очень интересно!!!
@alexanderkomyakov
@alexanderkomyakov 5 лет назад
Это невероятно, огромное спасибо за это видео, я раньше всё сохранял в текст и каждый раз делал кучу лишних преобразований, теперь попробую поэкспериментировать с этим и запомню.
@user-so9tc1te2m
@user-so9tc1te2m 2 года назад
Видео не просто полезно, а очень и очень полезно! Огромное спасибо за труд!
@user-dy3bk3pb2t
@user-dy3bk3pb2t 5 лет назад
Очередное спасибо и лайк. Очень нравятся Ваши уроки. Только не останавливайтесь!
@timurortskhanov8527
@timurortskhanov8527 6 лет назад
Спасибо Вам . Все понятно и доходчиво. Вы как всегда СУПЕР.
@segars9604
@segars9604 8 месяцев назад
Спасибо за бесценный труд!)
@user-pk3tq5vk9b
@user-pk3tq5vk9b 4 года назад
Спасибо, очень познавательный урок!
@KurpatovInstagram
@KurpatovInstagram 6 лет назад
Огромное спасибо!
@user-lx5vv3uu8u
@user-lx5vv3uu8u 4 года назад
О! Класс!!! А я на Вас подписан! Даже и не подозревал, что Вы увлекаетесь программированием! )))
@aksogen_erishtein
@aksogen_erishtein 6 лет назад
Действительно очень полезные видео. Так держать!
@user-xe5jj9ur7j
@user-xe5jj9ur7j 4 года назад
спасибо вам большое Из всего ютуба ваши уроки смотрю с большим энтузиазмом и досматриваю до конца 👩‍💻👍👍👍👍👍👍👍👍👏👏👏👏👏👏👏👏
@andrewbistroff1199
@andrewbistroff1199 6 лет назад
Спасибо за Урок!
@rudikshul25
@rudikshul25 Год назад
Спасибо вам большое за уроки , вы очень сильно мне помогли вы изучении и в практики написании собственных и учебных проектов на c++!
@user-nw5iw5ew9z
@user-nw5iw5ew9z 2 года назад
Сергей, спасибо за урок!
@DrUlrih
@DrUlrih 6 лет назад
Думал будет перегрузка
@alexs7931
@alexs7931 4 года назад
А что это, приведение к типу?
@nameundef8076
@nameundef8076 4 года назад
@@alexs7931 Угу. Получаем адрес объекта и приводим указатель на объект к указателю на байты (char).
@user-ny4zk7gj7n
@user-ny4zk7gj7n 3 месяца назад
Сергей нам нравиться эта тема и нравятся твои уроки!
@user-lx5vv3uu8u
@user-lx5vv3uu8u 4 года назад
Сергей, спасибо!
@Antonov_Ivan.
@Antonov_Ivan. 7 месяцев назад
Спасибо за урок!
@whoammiwho6172
@whoammiwho6172 9 месяцев назад
Сложно. Но я разберусь есть цель: сделать прогу которая будет закидывать в массив слова через сортировку прогонять. Через какой ни будь API. И уже потом перевод слова будет через туже сортировку записанный клеить с словом в массиве. В общем то, что нужна инфа ононь!
@maxamly
@maxamly 5 лет назад
ГОСПОДИ ЭТО ПРОСТО БОХ !!! СПАСИБО!!!!! УЖЕ ГОЛОВУ СЛОМАЛ НАД ЭТИМ!
@_Yes_.
@_Yes_. Год назад
lol
@user-ut7tj6bp4t
@user-ut7tj6bp4t 4 года назад
Довольно интересная тема))
@user-ur5kc8er8w
@user-ur5kc8er8w 5 лет назад
Огромное спасибо за уроки с классами! И небольшой совет... пользуйтесь другим блокнотом, например notepad++
@ruslandad365
@ruslandad365 8 месяцев назад
Лучшие УРОКИ!!!😊😊😊
@user-yw9bq1pt9v
@user-yw9bq1pt9v 8 месяцев назад
Спасибо тебе большое !!! Жаль что невыпускаешь контент про плюсы
@dezign_er
@dezign_er 6 лет назад
Спасибо за видео!
@user-gp7wc8nq3w
@user-gp7wc8nq3w 3 года назад
спасибо! просто лучший
@RrRrRrRroman
@RrRrRrRroman Год назад
Хороший урок!
@olegbocharnikov950
@olegbocharnikov950 5 лет назад
спасибо я добавил еще условие чтобы считывать определенную строчку
@Ermine882
@Ermine882 6 лет назад
Спасибо.
@user-ed3uu2lx9v
@user-ed3uu2lx9v 10 месяцев назад
Хорошее видео потому как делать. Если в классе есть виртуальные функции то и есть таблица Виртуальных функций которая также храниться в памяти объекта, твф хранит в себе адреса перехода на виртуальные функции и её изменение при считывании с файла может привести к непредвиденным результатам. Я имею ввиду при чтении неправильных данных из файла найти баг будет очень сложно.
@olegbocharnikov950
@olegbocharnikov950 5 лет назад
РЕСПЕКТ !!!
@ShishShushShashSheshShoshShysh
@ShishShushShashSheshShoshShysh 4 года назад
Полезный урок
@justkrit421
@justkrit421 6 лет назад
Спасибо огромное!
@SimpleCodeIT
@SimpleCodeIT 6 лет назад
Пожалуйста!
@justkrit421
@justkrit421 6 лет назад
подскажите, пожалуйста, подойдет ли такой метод для структур?
@user-dq2cj6ge2c
@user-dq2cj6ge2c 6 лет назад
Да )
@user-fi4pg8mc7q
@user-fi4pg8mc7q 6 лет назад
Сразу уточню я не смотрел все видео, просмотрев несколько очень понравилось как подается материал. Меня очень интересует как работать с бинарными файлами, как в них записывать, считывать информацию насколько я знаю там есть существенные отличия в сравнении с текстовыми файлами. Также интерестно узнать о возможностях работы с другими приложениями через С++ будут ли такие видео?
@wotmastersclub5559
@wotmastersclub5559 8 месяцев назад
Автору огромный респект за видео 👍 А можно ли сделать дополнительные вывод на принтер
@user-bc4vi6hl2f
@user-bc4vi6hl2f 6 лет назад
Очень полезный урок
@sleepyNovember_project
@sleepyNovember_project 5 месяцев назад
Бинарные? Так вот что за .bin файлы, наконец-то я это узнал
@sgimancs
@sgimancs 5 лет назад
Ставлю лайки постоянно т. к. это очень клевые уроки по плюсам. Но год нет почему-то комментов. Или все свалили уже на модный C#...
@rettjaconomaili8201
@rettjaconomaili8201 6 лет назад
Дякую!!!
@henrikhohanyan2471
@henrikhohanyan2471 2 года назад
можно использовать reinterpret_cast(&point) место char*(&point)
@user-dq2cj6ge2c
@user-dq2cj6ge2c 6 лет назад
Огромное СПАСИБО, я бы даже рекламу смотрел! Еще бы хотелось бы увидеть видео по записи структур и вывода. Ставь рекламу!!!Пусть будет для тебя еще одной мотивацией=) ну или ты поставил, а она у меня пропала и я не могу ее смотреть.
@pluto2656
@pluto2656 6 лет назад
топчик
@user-lu3fl1se9p
@user-lu3fl1se9p 3 года назад
Храни тебя Господь!!! Спасибо большое 🙏🙏🙏
@user-kb6qd8rg4g
@user-kb6qd8rg4g 4 года назад
спасибо
@user-vf9gm9zn4x
@user-vf9gm9zn4x 4 года назад
в случае работы с виртуальными методами, нужно сделать немного иначе: Base *deriveClass=new Derive(); //создаем указатель на клас-наследника, через указатель на базовый клас char* charArray = static_cast(dynamic_cast(deriveClass)); // так выглядит преобразование полиморфического класа в масив чаров с сохранением свойств полиморфизма ofstream.write(charArray, sizeof(Derive)); // записываем данные. Точно так же проходит и считывание. Сишный стиль преобразования типов это плюсовый static_cast, а он не учитывает свойств полиморфизма, т.к. это фича плюсов
@yugenepopov2014
@yugenepopov2014 8 месяцев назад
Спасибо
@mykhailomorhal2181
@mykhailomorhal2181 6 лет назад
Спасибо)
@thetiphon
@thetiphon 11 месяцев назад
5:40 приводить к char'y мы будем ссылку на объект Point Не ссылку, а указатель. & это операция взятия адреса
@tree-service
@tree-service 4 дня назад
отлично
@kaynsolo
@kaynsolo 6 лет назад
Like!
@knizhenokdenis9671
@knizhenokdenis9671 6 лет назад
Очень все супер, один вопрос, объекты с переменными типа string и int выводит с ошибкой, просит отладить, что можно поправить???
@wasony.126
@wasony.126 4 года назад
👌👌👌👌
@Cempll
@Cempll 6 лет назад
Сергей, а почему вы не пользуетесь списком инициализации? Он ведь быстрее работает
@user-dp5do9xs3o
@user-dp5do9xs3o 6 лет назад
Можно следующий урок про файловый ввод/вывод? Для олимпиады очень нужно пожалуйста.
@user-pk3tq5vk9b
@user-pk3tq5vk9b 4 года назад
Если я всё правильно понял, это же было в двух прошлых видео? Разве нет?
@user-or1hy4xz8u
@user-or1hy4xz8u 2 года назад
@@user-pk3tq5vk9b Да, Илья, ты правильно понял...
@user-hl1bh9hv3u
@user-hl1bh9hv3u Год назад
@@user-or1hy4xz8u оба ответили друг другу через два года
@user-or1hy4xz8u
@user-or1hy4xz8u Год назад
@@user-hl1bh9hv3u лучше позже, чем никогда)))
@sleepyNovember_project
@sleepyNovember_project 5 месяцев назад
Выдержка с MSDN используются только в языке C++. Эти операторы позволяют устранить неоднозначность и возможности допустить ошибку, которые характеры для приведения типов в стиле языка C. Эти операторы перечислены ниже. dynamic_cast используется для преобразования полиморфных типов. static_cast Используется для преобразования неполиморфных типов. const_cast Используется для удаления constvolatileатрибутов, а также __unaligned атрибутов. reinterpret_cast Используется для простого переосмысления битов. safe_cast используется в C++/CLI для создания проверяемой MSIL.
@ruslanbeksmagulov9520
@ruslanbeksmagulov9520 6 лет назад
Добрый вечер!Напишите пожалуйста как можно вводить данные не закрывая консоль?(В вашей программе идет ввод и консоль закрывает,затем нужно второй раз запускать программу для повторного ввода)
@Nito4kin
@Nito4kin 4 года назад
10/10
@user-nw5iw5ew9z
@user-nw5iw5ew9z 2 года назад
Кстати, преобразование (char*)&point можно сделать в стиле С++, reinterpret_cast(&point). А вот через static_cast не работает.
@Miiazzma
@Miiazzma Год назад
Ну static_cast же работает напрямую с переменной, а не через ее псевдоним или адрес. Это лишь моя догадка, поэтому если неверно, поправьте)
@nozim_r2270
@nozim_r2270 4 года назад
👍🏿👍🏿👍🏿
@outlaw4Iife
@outlaw4Iife 5 лет назад
кстати можно зашифровать сообщение какое-нибудь в виде бинарного кода в блокноте)
@gavyttop1341
@gavyttop1341 2 года назад
это тема)
@pulukchu
@pulukchu 3 года назад
Спасибо большое за видео! Объясните пожалуйста, почему при явном приведении использовался указатель? (char*) ?
@feewre
@feewre 3 года назад
Потому что метод read работает только с указателями на char. Но поскольку любой указатель содержит в себе лишь адрес объекта в памяти, его можно явно привести к указателю на любой другой тип. Неважно, находится ли обьект такого типа по данному адресу или нет. Дальнейшая работа с таким указателем остаётся на совести программиста
@nicivanov5135
@nicivanov5135 3 года назад
Все хорошо! Но, нужено больше примеров метов, организации данных. Чтоб случайно не изобрести велосипед 😊.
@user-or1hy4xz8u
@user-or1hy4xz8u 2 года назад
велосипеды изобретать полезно....
@borisshalabanov4620
@borisshalabanov4620 6 лет назад
спасибо за урок) У меня опрос: если я не закрою файл функцией fin.close(), это будет утечка динамической памяти, или я просто забуду прекратить работу с файлом?
@borisshalabanov4620
@borisshalabanov4620 6 лет назад
вопрос*
@0xMorgan
@0xMorgan 5 лет назад
утечки памяти не будет, будет не доступен ресурс для других приложений(тхт файл). типо как в библиотеке, ты взял почитать книгу, прочел ее, но не вернул обратно, и для других читателей она не доступна.
@TheWladberlin
@TheWladberlin 4 года назад
файл недоступен, и прога слетает или в лучшем случае ошибку дает. оно тебе надо?
@Kokurorokuko
@Kokurorokuko 3 года назад
Не совсем понимаю. Если навести на метод read, то там будет тип возвращаемого значения istream, а не bool. Тогда почему его можно использовать в while и в if?
@user-ld7ru8xr5k
@user-ld7ru8xr5k 6 лет назад
Здравствуйте,спасибо большое за ваши видео,желаю вам успехов в вашем не легком деле. Не могли бы вы поправить нумерацию уроков в первых 15-ти,чтобы изучать их по порядку.
@SimpleCodeIT
@SimpleCodeIT 6 лет назад
Пожалуйста, а что не так с нумерацией? Там всё по прядку.
@TheWladberlin
@TheWladberlin 4 года назад
Я с самого первого урока. С нуммерацией не заметил ничего крамольного, проглотил все на одном дыхании, за один день. Сиди и учи, не выпендривайся! :)
@Podsoznanie_Sila
@Podsoznanie_Sila Год назад
@@TheWladberlin ты ответил через 2 года, а через это время уже нумерацию он изменил
@siinon1313
@siinon1313 5 лет назад
Данный способ не сработал для меня, когда я использовал его для наследника абстрактного класса. После записи из файла в объект, при попытке вызова виртуальной функции, которая была переписана в наследнике, мне выдает ошибку доступа к памяти.
@exaliffeed5840
@exaliffeed5840 4 года назад
хм, у меня всё нормально работает, если я правильно понял, что сохранялся и читался один и тот же класс. Если же классы разные, то конечно будет ошибка, потому что размеры объектов у этих классов разные.
@user-vf9gm9zn4x
@user-vf9gm9zn4x 4 года назад
в случае работы с виртуальными методами, нужно сделать немного иначе: Base *deriveClass=new Derive(); //создаем указатель на клас-наследника, через указатель на базовый клас char* charArray = static_cast(dynamic_cast(deriveClass)); // так выглядит преобразование полиморфического класа в масив чаров с сохранением свойств полиморфизма ofstream.write(charArray, sizeof(Derive)); // записываем данные. Точно так же проходит и считывание. Сишный стиль преобразования типов это плюсовый static_cast, а он не учитывает свойств полиморфизма, т.к. это фича плюсов
@alexsklemin3708
@alexsklemin3708 2 года назад
Можно вопрос: а если у нас структура работать будет также?
@Viamsupervadetvadens
@Viamsupervadetvadens 6 лет назад
up
@_Yes_.
@_Yes_. 2 года назад
up
@llexDlex
@llexDlex Год назад
ничего непонятно, но очень интересно.
@Anim233
@Anim233 3 года назад
А что делать если при считки с файла, оно считывает до последнего елемента,причем считывает до последней характеристики и потом на ней же просто кидает segmentation fault?
@EEEppt
@EEEppt 3 года назад
Друзья интересующиеся программированием так далеко еще не заходили )))
@murello8404
@murello8404 6 лет назад
Как записывать класс с полем string?
@strongcat844
@strongcat844 6 лет назад
я так понимаю что со стринг тут не получиться, тк стринг имеет всегда разный обьем в битах, а тобиж если хочешь записать строку, то нужно заводить масив чаров, к примеру массив содержащий 255 символов, и кидать туда свою строку которая по обьему будет меньше 255 символов, и опять же строку брать нужно не из класса записываемого, а тобиж реализация класса с записью и использованием стринг с этим методом под вопросом. Хотя можно использовать искуственый метод который приведет все стринги к опр кол ву символов и запишет, и метод который уберет лишние символы при считывании. Тогда стринг будет одной длинны по битам
@user-cs3dq1st7n
@user-cs3dq1st7n 5 лет назад
String s; s.c_str()возвращает указатель на char*, который и записываете
@levovix
@levovix 4 года назад
@@user-cs3dq1st7n тут проблема в другом, фактически в классе хранится не строка, а её управляющий элемент (длинна, указатель на динамический массив). её надо записывать и читать отдельно, как в прочем и все динамические массивы. а с указателями вообще беда. ты его записал, прочитал, а в другом сеансе он невалиден (
@user-is9fv5bi7x
@user-is9fv5bi7x 6 лет назад
Добрый день. Спасибо за урок. Если в классе динамически выделяется память, после чтения объекта данного класса с файла, возникает ошибка при освобождении памяти. Могли бы Вы рассказать как обходить такие моменты?
@user-is9fv5bi7x
@user-is9fv5bi7x 6 лет назад
Когда набирал пример по вашему уроку, подобная проблема возникала даже с полем класса типа string.
@rwrddlr7449
@rwrddlr7449 5 лет назад
никогда так писать нельзя. это пример для обучения. гуглите сериализацию, это отдельная задача в программировании
@andreybazhenov9741
@andreybazhenov9741 5 лет назад
Как бороться с Eof если данных много:?
@flepjack
@flepjack 3 года назад
Вот это конечно...
@exaliffeed5840
@exaliffeed5840 4 года назад
сохраняются ли методы класса или же только поля?
@feewre
@feewre 3 года назад
Как ты собираешься записать методы класса в файл? Методы это функции для работы с обьектами класса. Обьект не содержит функции, он содержит только данные(поля).
@exaliffeed5840
@exaliffeed5840 3 года назад
@@feewre я уже давно разобрался с этим вопросом, понял уже, что только поля сохраняются
@aleksanderostrowski7785
@aleksanderostrowski7785 10 месяцев назад
Передача экземпляров класса , который принимает числа -работает. А что делать если хочешь передавать словп/string ???Подскажите кто нибудь.
@bolofficial4076
@bolofficial4076 2 года назад
а зачем использовать Write если можно в самой функции print записывать значение в Фаил?
@Ma-kt1ml
@Ma-kt1ml Год назад
Как записывать и считывать объекты, у которых есть полe - указатель на динамическую память?
@GameWorldMrKIller
@GameWorldMrKIller 4 года назад
уроки очень интересные, но я перешёл на книги, и изучал уже по ним, и у меня вопрос возник, есть exe файл, его нужно побайтово считать и записать в массив, после чего когда пользователь нажмёт на кнопку, то файл должен из массива снова собраться в exe и запуститься, я так понимаю, что это как то можно через fstream сделать, но как я вообще не представляю, есть тут знатоки, скиньте ссылочку, или объясните в кратце принцип, а то поиск в гугле дал мутные ответы
@alexeyprofit5911
@alexeyprofit5911 5 лет назад
Пожалуйста, объясните логику преобразования в этой строке: (char*)&point
@maxpo801
@maxpo801 3 года назад
char* - указатель, содержит адрес памяти. &point - не ссылка, как сказал уважаемый Сергей, видимо по ошибке, а тоже адрес объекта. (char*)&point обязывает рассматривать адрес объекта point как адрес на область памяти типа char. Ведь функция write принимает именно указатель на char
@alexkasimovsky2591
@alexkasimovsky2591 5 лет назад
а можно вот так: write(reinterpret_cast(&o), sizeof(o));
@feewre
@feewre 5 лет назад
Можно. Один хер, программа у всех вылетает после отработки
@user-of6hd5gv5p
@user-of6hd5gv5p 3 года назад
Разве на не нужно поместить .close(),в блок else, то есть, если файл не открылся, то зачем его закрывать, и не вызовет ли это ошибки?
@user-sd6wq1dy5i
@user-sd6wq1dy5i 5 лет назад
у меня ошибка Ошибка C2039 write: не является членом "std::basic_ifstream" Project1 c:\c++\project1\project1\main.cpp 39
@user-jp8fr4lz4c
@user-jp8fr4lz4c 2 года назад
1:16 - Есть способ, с помощью которого мы можем не работать. Ага, так и запишем )
@TheWladberlin
@TheWladberlin 4 года назад
Для записи и для чтения намного удобнее использовать отдельные функции с входными параметрами path и point. Через ссылки сделал. Может кому-то поможет: void fileOpenWrite(string &path, Point &point) { ofstream fout; fout.open(path, ofstream::app); if (fout.is_open()) { cout
@andr74b11
@andr74b11 3 года назад
А как мі понимаем, что в fin.read() нужно считать sizeof(Point) именно тот, который нам нужен?
@Kokurorokuko
@Kokurorokuko 3 года назад
sizeof(point) всегда один и тот же, если там нет полей string.
@user-sf5zv4jc5v
@user-sf5zv4jc5v 2 года назад
Это же сериализация?
@illiahrynov3213
@illiahrynov3213 3 года назад
никто не подскажет почему после чтения файла в структуру, массив структуры больше не хочет менять свой размер. к примеру,у меня телефонная книга созданная массивом струкруры,пользователь добавляются и удаляются отлично когда работаешь с клавиатуры,но когда заполнил свою струкутру из файла, уже не возможно ни добавить пользователя ни удалить его
@olegbocharnikov950
@olegbocharnikov950 5 лет назад
у меня там к прошлому уроку
@BrownAleks
@BrownAleks 4 года назад
Конечно спасибо за урок! Но у меня осталось очень много вопросов. Сдаётся мне такое ощущение, что эту тему во круг функций: fout.write((char*)&point, sizeof(Point)); и fin.read((char*)&pnt, sizeof(Point)); Вы осветили очень, и очень поверхностно. Каким образом функция понимает, что именно и в каком количестве сохранить и прочитать? Ка сохранять сложные, унаследованные классы, с вложенными классами как быть? Как сохранить массив экземпляров класса? Поштучно, или есть варианты, сразу пачкой? Эти функции нормально работают, если говорить о нескольких строках записи. А попробуйте в цикле записать 10тыс. строк, и прочитать их. Количество записанных и количество прочитанных строк сильно разнятся, даже в таком простом варианте, как в Вашем примере. Лайки авансом, в надежде, что на эти вопросы я найду ответы в Ваших следующих видео.
@lacklacktriplehack4174
@lacklacktriplehack4174 2 года назад
сам гугли находи и экспериментируй неужто всё разжевывать нужно?
@BrownAleks
@BrownAleks 2 года назад
@@lacklacktriplehack4174 На давность комминта не смотришь чтоль? Уже всё давно за гуглил и нашёл. =)
@lacklacktriplehack4174
@lacklacktriplehack4174 2 года назад
@@BrownAleks это на будущее другим челикам что сенсей не обязан разжевывать всё от корки до корки
@user-vx8rc5ob5x
@user-vx8rc5ob5x 3 года назад
А в чистом виде, обект вписать реально?
@Kokurorokuko
@Kokurorokuko 3 года назад
Что значит в чистом виде? Если Вы имеете в виду так, чтобы можно было открыть файл и прочесть данные, то можно просто выводить текстом поля объекта (это материалы прошлых уроков)
@pubgr862
@pubgr862 5 лет назад
Почему это не работает для объектов string выдаёт ошибку доступа на выходе из самой программы
@alexeyprofit5911
@alexeyprofit5911 5 лет назад
вроде бы со стрингом и динамической памятью нельзя работать.
@pubgr862
@pubgr862 5 лет назад
Alexey Profit если только стринг сам использует динамическую память, сам я в коде не выделял 🤷🏿‍♂️
@seltsov1
@seltsov1 4 года назад
Как я понял string использует динамический массив чаров. При вытаскивании объекта из файла методом read, создается не новый объект, а еще один указатель на старый объект, поэтому на выходе из программы чистится одна и та же область динамической памяти дважды и происходит утечка. Я для себя решил эту проблему так: string str("sss"); ofstream infile; infile.open("text.txt"); if (!infile.is_open()) cout
@vladyslavkryvoruchko
@vladyslavkryvoruchko Год назад
А если в файл записать вообще рандомные символы, и потом считать и привести в Point, то у нас выйдет случайная точка!
@aidenforbidden6518
@aidenforbidden6518 6 лет назад
Это случайно не бинарная сериализация?
@Tragraph
@Tragraph 6 лет назад
нет
@vladpetriuk7025
@vladpetriuk7025 5 лет назад
как так коментировать как Сергей в видео?!? хелп
@TheWladberlin
@TheWladberlin 4 года назад
Легко. Комментировать: [Str]+[k]+[c] Декомменторовать: [Str]+[k]+[u]
Далее
КРАФЧУ NAMELESS СКИН!
1:53:35
Просмотров 453 тыс.
Игровой Комп с Авито за 4500р
01:00
North Korea sends troops to Ukraine
12:52
Просмотров 362 тыс.
ты C++ РАЗРАБОТЧИК?) ага
12:04
Просмотров 227 тыс.