Тёмный

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

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

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

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

 

28 сен 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 180   
@SimpleCodeIT
@SimpleCodeIT 6 лет назад
*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
@efimlos
@efimlos 6 лет назад
Где ссылки на сырцы? по мойму это не прозвучало, что вы по сути изменяете один обьект а не создайте три. ихмо это важно.
@game_cx
@game_cx 4 года назад
Для чего писать ofstream fout; и ofstream::app если и fstream... работает? Ну лично у меня
@АртёмМалыш-п7э
@АртёмМалыш-п7э 4 года назад
@@game_cx урок fstream следующий в плейлисте
@Вероника-щ1ф6у
@Вероника-щ1ф6у 6 лет назад
Огонь!!! Давно искала информацию по сохранению объектов с нормальными разъяснениями. Спасибо большое, наконец сдвинулась с мертвой точки!
@SimpleCodeIT
@SimpleCodeIT 6 лет назад
#работасфайлами #ofstream #ifstream #SimpleCode #урокипрограммирования
@alexanderkomyakov
@alexanderkomyakov 5 лет назад
Это невероятно, огромное спасибо за это видео, я раньше всё сохранял в текст и каждый раз делал кучу лишних преобразований, теперь попробую поэкспериментировать с этим и запомню.
@ЕгорФедоренко-с2щ
@ЕгорФедоренко-с2щ 4 года назад
ОЧЕНЬ ВАЖНО: Способ рабочий только для простейший структур. Если есть хоть одно поле string в структуре, работать не будет. Можно конечно сделать вместо string массив из char, но тогда все преимущества строк пропадают.
@dilivolker6135
@dilivolker6135 2 года назад
Самый полезный комментарий
@calamitydeadshot3143
@calamitydeadshot3143 2 года назад
А каким образом это можно преодолеть? Есть ли какие-то другие способы сохранить объект в класс или нужно с нуля писать методы сохранения?
@ЕгорФедоренко-с2щ
@ЕгорФедоренко-с2щ 2 года назад
@@calamitydeadshot3143 почитайте что такое JSON или XML
@vladyslavkryvoruchko
@vladyslavkryvoruchko 2 года назад
Проблема в том, что в файл сохраняется не поле строчки, а указатель на поле строчки. Естественно, при считывании по том адресу уже этой строчки возможно и нет.
@АртимаркШильд
@АртимаркШильд 2 года назад
@@vladyslavkryvoruchko о, получается, проблема при наличии любых данных в куче, а не только string. Сохраняются адреса, но не сами данные. Теперь надо думать, как сливать данные в файл из памяти. Спасибо за разъяснение.
@maxamly
@maxamly 5 лет назад
ГОСПОДИ ЭТО ПРОСТО БОХ !!! СПАСИБО!!!!! УЖЕ ГОЛОВУ СЛОМАЛ НАД ЭТИМ!
@_Yes_.
@_Yes_. 2 года назад
lol
@АнтонК-м8о
@АнтонК-м8о 6 лет назад
Огромное спасибо за уроки с классами! И небольшой совет... пользуйтесь другим блокнотом, например notepad++
@andrewbistroff1199
@andrewbistroff1199 6 лет назад
Спасибо за Урок!
@rudikshul25
@rudikshul25 Год назад
Спасибо вам большое за уроки , вы очень сильно мне помогли вы изучении и в практики написании собственных и учебных проектов на c++!
@Ermine882
@Ermine882 6 лет назад
Спасибо.
@DmitryDolganov
@DmitryDolganov 5 лет назад
Сергей, спасибо!
@-pi_vo-5397
@-pi_vo-5397 5 дней назад
Спасибо тибе ты супер крутой мне нравица на физике смотрю 😂😂❤❤❤
@ИльяЯкобсон-ю7ж
@ИльяЯкобсон-ю7ж 4 года назад
Спасибо, очень познавательный урок!
@olegbocharnikov950
@olegbocharnikov950 5 лет назад
спасибо я добавил еще условие чтобы считывать определенную строчку
@ЧерновАндрей-г6т
Хорошее видео потому как делать. Если в классе есть виртуальные функции то и есть таблица Виртуальных функций которая также храниться в памяти объекта, твф хранит в себе адреса перехода на виртуальные функции и её изменение при считывании с файла может привести к непредвиденным результатам. Я имею ввиду при чтении неправильных данных из файла найти баг будет очень сложно.
@pavelios3577
@pavelios3577 6 лет назад
Спасибо за видео.
@whoammiwho6172
@whoammiwho6172 Год назад
Сложно. Но я разберусь есть цель: сделать прогу которая будет закидывать в массив слова через сортировку прогонять. Через какой ни будь API. И уже потом перевод слова будет через туже сортировку записанный клеить с словом в массиве. В общем то, что нужна инфа ононь!
@aysmercer
@aysmercer 9 дней назад
И как прогресс в создании программы спустя год?
@rettjaconomaili8201
@rettjaconomaili8201 6 лет назад
Дякую!!!
@sgimancs
@sgimancs 5 лет назад
Ставлю лайки постоянно т. к. это очень клевые уроки по плюсам. Но год нет почему-то комментов. Или все свалили уже на модный C#...
@ДмитрийБузницкий-б3н
Кстати, преобразование (char*)&point можно сделать в стиле С++, reinterpret_cast(&point). А вот через static_cast не работает.
@Miiazzma
@Miiazzma Год назад
Ну static_cast же работает напрямую с переменной, а не через ее псевдоним или адрес. Это лишь моя догадка, поэтому если неверно, поправьте)
@sleepyNovember_project
@sleepyNovember_project 8 месяцев назад
Бинарные? Так вот что за .bin файлы, наконец-то я это узнал
@ГусейнСалахов
@ГусейнСалахов 4 года назад
Довольно интересная тема))
@mykhailomorhal2181
@mykhailomorhal2181 6 лет назад
Спасибо)
@knizhenokdenis9671
@knizhenokdenis9671 6 лет назад
Очень все супер, один вопрос, объекты с переменными типа string и int выводит с ошибкой, просит отладить, что можно поправить???
@yugenepopov2014
@yugenepopov2014 11 месяцев назад
Спасибо
@outlaw4Iife
@outlaw4Iife 5 лет назад
кстати можно зашифровать сообщение какое-нибудь в виде бинарного кода в блокноте)
@gavyttop1341
@gavyttop1341 2 года назад
это тема)
@Kokurorokuko
@Kokurorokuko 3 года назад
Не совсем понимаю. Если навести на метод read, то там будет тип возвращаемого значения istream, а не bool. Тогда почему его можно использовать в while и в if?
@tree-service
@tree-service 3 месяца назад
отлично
@Ланс-м1в
@Ланс-м1в 6 лет назад
Добрый день. Спасибо за урок. Если в классе динамически выделяется память, после чтения объекта данного класса с файла, возникает ошибка при освобождении памяти. Могли бы Вы рассказать как обходить такие моменты?
@Ланс-м1в
@Ланс-м1в 6 лет назад
Когда набирал пример по вашему уроку, подобная проблема возникала даже с полем класса типа string.
@rwrddlr7449
@rwrddlr7449 6 лет назад
никогда так писать нельзя. это пример для обучения. гуглите сериализацию, это отдельная задача в программировании
@murello8404
@murello8404 6 лет назад
Как записывать класс с полем string?
@strongcat844
@strongcat844 6 лет назад
я так понимаю что со стринг тут не получиться, тк стринг имеет всегда разный обьем в битах, а тобиж если хочешь записать строку, то нужно заводить масив чаров, к примеру массив содержащий 255 символов, и кидать туда свою строку которая по обьему будет меньше 255 символов, и опять же строку брать нужно не из класса записываемого, а тобиж реализация класса с записью и использованием стринг с этим методом под вопросом. Хотя можно использовать искуственый метод который приведет все стринги к опр кол ву символов и запишет, и метод который уберет лишние символы при считывании. Тогда стринг будет одной длинны по битам
@ВалерийУстинов-н3ш
String s; s.c_str()возвращает указатель на char*, который и записываете
@levovix
@levovix 5 лет назад
@@ВалерийУстинов-н3ш тут проблема в другом, фактически в классе хранится не строка, а её управляющий элемент (длинна, указатель на динамический массив). её надо записывать и читать отдельно, как в прочем и все динамические массивы. а с указателями вообще беда. ты его записал, прочитал, а в другом сеансе он невалиден (
@Cempll
@Cempll 6 лет назад
Сергей, а почему вы не пользуетесь списком инициализации? Он ведь быстрее работает
@ShishShushShashSheshShoshShysh
@ShishShushShashSheshShoshShysh 4 года назад
Полезный урок
@nicivanov5135
@nicivanov5135 3 года назад
Все хорошо! Но, нужено больше примеров метов, организации данных. Чтоб случайно не изобрести велосипед 😊.
@ДмитрийНормов-ю6ц
@ДмитрийНормов-ю6ц 2 года назад
велосипеды изобретать полезно....
@pluto2656
@pluto2656 6 лет назад
топчик
@егорщербанов
@егорщербанов 6 лет назад
у меня ошибка Ошибка C2039 write: не является членом "std::basic_ifstream" Project1 c:\c++\project1\project1\main.cpp 39
@Ma-kt1ml
@Ma-kt1ml Год назад
Как записывать и считывать объекты, у которых есть полe - указатель на динамическую память?
@pubgr862
@pubgr862 5 лет назад
Почему это не работает для объектов string выдаёт ошибку доступа на выходе из самой программы
@alexeyprofit5911
@alexeyprofit5911 5 лет назад
вроде бы со стрингом и динамической памятью нельзя работать.
@pubgr862
@pubgr862 5 лет назад
Alexey Profit если только стринг сам использует динамическую память, сам я в коде не выделял 🤷🏿‍♂️
@seltsov1
@seltsov1 5 лет назад
Как я понял string использует динамический массив чаров. При вытаскивании объекта из файла методом read, создается не новый объект, а еще один указатель на старый объект, поэтому на выходе из программы чистится одна и та же область динамической памяти дважды и происходит утечка. Я для себя решил эту проблему так: string str("sss"); ofstream infile; infile.open("text.txt"); if (!infile.is_open()) cout
@Nito4kin
@Nito4kin 4 года назад
10/10
@illiahrynov3213
@illiahrynov3213 3 года назад
никто не подскажет почему после чтения файла в структуру, массив структуры больше не хочет менять свой размер. к примеру,у меня телефонная книга созданная массивом струкруры,пользователь добавляются и удаляются отлично когда работаешь с клавиатуры,но когда заполнил свою струкутру из файла, уже не возможно ни добавить пользователя ни удалить его
@flepjack
@flepjack 3 года назад
Вот это конечно...
@andr74b11
@andr74b11 3 года назад
А как мі понимаем, что в fin.read() нужно считать sizeof(Point) именно тот, который нам нужен?
@Kokurorokuko
@Kokurorokuko 3 года назад
sizeof(point) всегда один и тот же, если там нет полей string.
@TheFalcons83
@TheFalcons83 5 лет назад
А если размер объекта класса динамически меняется как быть?
@iliakolomiiets8881
@iliakolomiiets8881 2 года назад
При попытке чтения из файла выдает ошибку: _Pnext , видео супер, но кто знает что делать?
@vladyslavkryvoruchko
@vladyslavkryvoruchko 2 года назад
А если в файл записать вообще рандомные символы, и потом считать и привести в Point, то у нас выйдет случайная точка!
@ДаниилНепелев-н4х
@ДаниилНепелев-н4х 2 года назад
1:16 - Есть способ, с помощью которого мы можем не работать. Ага, так и запишем )
@vladalu9794
@vladalu9794 6 лет назад
Этот урок прям вообще супер, спасибо большое, очень интересно!!!
@DD0S2
@DD0S2 3 года назад
спасибо
@GenameSalim
@GenameSalim 5 лет назад
Благослови тебя Господь. Благодарю за уроки!)
@endlessvd
@endlessvd 2 года назад
бога нет
@AsdfgAsdfg12363
@AsdfgAsdfg12363 Год назад
@@endlessvd по любому "создатель" непременно существует.
@endlessvd
@endlessvd Год назад
@@AsdfgAsdfg12363 ну значит ты открыл только что физику, в частности теорию относительности и квантовую механику. Их действительно можно назвать нашими создателями, а все остальное ерунда
@saintnikija7821
@saintnikija7821 Год назад
@@endlessvd не будь душнилой, задрот
@magamedmirzoev1408
@magamedmirzoev1408 Месяц назад
@@endlessvd Тогда почему все самые великие учёные были верующими?
@DrUlrih
@DrUlrih 6 лет назад
Думал будет перегрузка
@alexs7931
@alexs7931 4 года назад
А что это, приведение к типу?
@nameundef8076
@nameundef8076 4 года назад
@@alexs7931 Угу. Получаем адрес объекта и приводим указатель на объект к указателю на байты (char).
@KurpatovInstagram
@KurpatovInstagram 6 лет назад
Огромное спасибо!
@DmitryDolganov
@DmitryDolganov 5 лет назад
О! Класс!!! А я на Вас подписан! Даже и не подозревал, что Вы увлекаетесь программированием! )))
@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, а он не учитывает свойств полиморфизма, т.к. это фича плюсов
@aksogen_erishtein
@aksogen_erishtein 6 лет назад
Действительно очень полезные видео. Так держать!
@ЮрийЛука-и2ъ
@ЮрийЛука-и2ъ 6 лет назад
Сразу уточню я не смотрел все видео, просмотрев несколько очень понравилось как подается материал. Меня очень интересует как работать с бинарными файлами, как в них записывать, считывать информацию насколько я знаю там есть существенные отличия в сравнении с текстовыми файлами. Также интерестно узнать о возможностях работы с другими приложениями через С++ будут ли такие видео?
@aleksanderostrowski7785
@aleksanderostrowski7785 Год назад
Передача экземпляров класса , который принимает числа -работает. А что делать если хочешь передавать словп/string ???Подскажите кто нибудь.
@segars9604
@segars9604 11 месяцев назад
Спасибо за бесценный труд!)
@timurortskhanov8527
@timurortskhanov8527 6 лет назад
Спасибо Вам . Все понятно и доходчиво. Вы как всегда СУПЕР.
@Хлебушек-ц3к
@Хлебушек-ц3к 6 лет назад
Можно следующий урок про файловый ввод/вывод? Для олимпиады очень нужно пожалуйста.
@ИльяЯкобсон-ю7ж
@ИльяЯкобсон-ю7ж 4 года назад
Если я всё правильно понял, это же было в двух прошлых видео? Разве нет?
@ДмитрийНормов-ю6ц
@ДмитрийНормов-ю6ц 2 года назад
@@ИльяЯкобсон-ю7ж Да, Илья, ты правильно понял...
@Андре-и9й
@Андре-и9й 2 года назад
@@ДмитрийНормов-ю6ц оба ответили друг другу через два года
@ДмитрийНормов-ю6ц
@ДмитрийНормов-ю6ц 2 года назад
@@Андре-и9й лучше позже, чем никогда)))
@СыргажанБаатырбекова-ъ5э
спасибо вам большое Из всего ютуба ваши уроки смотрю с большим энтузиазмом и досматриваю до конца 👩‍💻👍👍👍👍👍👍👍👍👏👏👏👏👏👏👏👏
@wotmastersclub5559
@wotmastersclub5559 11 месяцев назад
Автору огромный респект за видео 👍 А можно ли сделать дополнительные вывод на принтер
@Viamsupervadetvadens
@Viamsupervadetvadens 6 лет назад
up
@_Yes_.
@_Yes_. 2 года назад
up
@henrikhohanyan2471
@henrikhohanyan2471 3 года назад
можно использовать reinterpret_cast(&point) место char*(&point)
@borisshalabanov4620
@borisshalabanov4620 6 лет назад
спасибо за урок) У меня опрос: если я не закрою файл функцией fin.close(), это будет утечка динамической памяти, или я просто забуду прекратить работу с файлом?
@borisshalabanov4620
@borisshalabanov4620 6 лет назад
вопрос*
@0xMorgan
@0xMorgan 5 лет назад
утечки памяти не будет, будет не доступен ресурс для других приложений(тхт файл). типо как в библиотеке, ты взял почитать книгу, прочел ее, но не вернул обратно, и для других читателей она не доступна.
@TheWladberlin
@TheWladberlin 5 лет назад
файл недоступен, и прога слетает или в лучшем случае ошибку дает. оно тебе надо?
@dezign_er
@dezign_er 6 лет назад
Спасибо за видео!
@zeliksss9297
@zeliksss9297 Месяц назад
кто ща смотрит этот урок, пройдите тему сериализации и десериализации, узнайте про ios::binary и ее отличие от обычного текстового режима, все это как раз нужно. например, от самых мелочей: когда мы переносим файл из 64 бит в 32 бит до сложнейших структур где очень важна точность и правильность переноса данных( например, read считывает сырые байты и записывает их в соответствующую область памяти, чтобы вы могли снова использовать эти данные в программе, интерпретируя их в текст).
@justkrit421
@justkrit421 6 лет назад
Спасибо огромное!
@SimpleCodeIT
@SimpleCodeIT 6 лет назад
Пожалуйста!
@justkrit421
@justkrit421 6 лет назад
подскажите, пожалуйста, подойдет ли такой метод для структур?
@ЯЗдесь-ъ5ф
@ЯЗдесь-ъ5ф 6 лет назад
Да )
@НаташаИбраева-о5з
Очередное спасибо и лайк. Очень нравятся Ваши уроки. Только не останавливайтесь!
@sleepyNovember_project
@sleepyNovember_project 8 месяцев назад
Выдержка с MSDN используются только в языке C++. Эти операторы позволяют устранить неоднозначность и возможности допустить ошибку, которые характеры для приведения типов в стиле языка C. Эти операторы перечислены ниже. dynamic_cast используется для преобразования полиморфных типов. static_cast Используется для преобразования неполиморфных типов. const_cast Используется для удаления constvolatileатрибутов, а также __unaligned атрибутов. reinterpret_cast Используется для простого переосмысления битов. safe_cast используется в C++/CLI для создания проверяемой MSIL.
@НиколайБелов-с2о
@НиколайБелов-с2о 2 года назад
Видео не просто полезно, а очень и очень полезно! Огромное спасибо за труд!
@nikitasuyazov2060
@nikitasuyazov2060 2 месяца назад
Запись (char*)&pnt странная. Наверное этот синтаксис только запомнить можно, понять никак?
@Anim233
@Anim233 3 года назад
А что делать если при считки с файла, оно считывает до последнего елемента,причем считывает до последней характеристики и потом на ней же просто кидает segmentation fault?
@thetiphon
@thetiphon Год назад
5:40 приводить к char'y мы будем ссылку на объект Point Не ссылку, а указатель. & это операция взятия адреса
@kaynsolo
@kaynsolo 6 лет назад
Like!
@зайка-щ9о
@зайка-щ9о 11 месяцев назад
Спасибо тебе большое !!! Жаль что невыпускаешь контент про плюсы
@ruslanbeksmagulov9520
@ruslanbeksmagulov9520 6 лет назад
Добрый вечер!Напишите пожалуйста как можно вводить данные не закрывая консоль?(В вашей программе идет ввод и консоль закрывает,затем нужно второй раз запускать программу для повторного ввода)
@EEEppt
@EEEppt 3 года назад
Друзья интересующиеся программированием так далеко еще не заходили )))
@alexeyprofit5911
@alexeyprofit5911 5 лет назад
Пожалуйста, объясните логику преобразования в этой строке: (char*)&point
@maxpo801
@maxpo801 3 года назад
char* - указатель, содержит адрес памяти. &point - не ссылка, как сказал уважаемый Сергей, видимо по ошибке, а тоже адрес объекта. (char*)&point обязывает рассматривать адрес объекта point как адрес на область памяти типа char. Ведь функция write принимает именно указатель на char
@andreybazhenov9741
@andreybazhenov9741 6 лет назад
Как бороться с Eof если данных много:?
@BazirAndrei
@BazirAndrei Год назад
Ваще не понял.... в файле сохраняется не объект, а ссылка на объект ... поэтому, если мы выйдем из программы или попытаемся прочитать его из другой программы, мы прочитаем адрес, по которому может быть всякая лажа к этому моменту .... первый раз не согласен с автором...
@RrRrRrRroman
@RrRrRrRroman Год назад
кстати, да, после перезапуска получил вывод "мусора")
@ЯЗдесь-ъ5ф
@ЯЗдесь-ъ5ф 6 лет назад
Огромное СПАСИБО, я бы даже рекламу смотрел! Еще бы хотелось бы увидеть видео по записи структур и вывода. Ставь рекламу!!!Пусть будет для тебя еще одной мотивацией=) ну или ты поставил, а она у меня пропала и я не могу ее смотреть.
@АндрейМиненко-ц3з
Очень полезный урок
@GameWorldMrKIller
@GameWorldMrKIller 4 года назад
уроки очень интересные, но я перешёл на книги, и изучал уже по ним, и у меня вопрос возник, есть exe файл, его нужно побайтово считать и записать в массив, после чего когда пользователь нажмёт на кнопку, то файл должен из массива снова собраться в exe и запуститься, я так понимаю, что это как то можно через fstream сделать, но как я вообще не представляю, есть тут знатоки, скиньте ссылочку, или объясните в кратце принцип, а то поиск в гугле дал мутные ответы
@ЯрославГоловко-ф6и
спасибо
@olegbocharnikov950
@olegbocharnikov950 5 лет назад
РЕСПЕКТ !!!
@user-vf9gm9zn4x
@user-vf9gm9zn4x 4 года назад
в случае работы с виртуальными методами, нужно сделать немного иначе: Base *deriveClass=new Derive(); //создаем указатель на клас-наследника, через указатель на базовый клас char* charArray = static_cast(dynamic_cast(deriveClass)); // так выглядит преобразование полиморфического класа в масив чаров с сохранением свойств полиморфизма ofstream.write(charArray, sizeof(Derive)); // записываем данные. Точно так же проходит и считывание. Сишный стиль преобразования типов это плюсовый static_cast, а он не учитывает свойств полиморфизма, т.к. это фича плюсов
@alexkasimovsky2591
@alexkasimovsky2591 5 лет назад
а можно вот так: write(reinterpret_cast(&o), sizeof(o));
@feewre
@feewre 5 лет назад
Можно. Один хер, программа у всех вылетает после отработки
@exaliffeed5840
@exaliffeed5840 4 года назад
сохраняются ли методы класса или же только поля?
@feewre
@feewre 3 года назад
Как ты собираешься записать методы класса в файл? Методы это функции для работы с обьектами класса. Обьект не содержит функции, он содержит только данные(поля).
@exaliffeed5840
@exaliffeed5840 3 года назад
@@feewre я уже давно разобрался с этим вопросом, понял уже, что только поля сохраняются
@ВадимМинаков-к5ю
@ВадимМинаков-к5ю 10 месяцев назад
Что интересно, я пытался сохранить класс, где есть string переменные, и в итоге в конце программы при чтении их из файла у меня выдается ошибка, что я залез за границы массива, хотя в консоль данные успевают вывестись. Я решил поэкспериментировать. При использовании классов, где используются только данные связанные с числами(int, double) все работает. Работает с классами где есть переменные char. Работает с классами где есть массив из char, но вот со string не работает. Может я что то не понимаю. Есть у кого нибудь рабочий код где можно сохранять в файл txt классы с string переменными.
@sleepyNovember_project
@sleepyNovember_project 8 месяцев назад
Удалось решить данную проблему?
@rafk5341
@rafk5341 Месяц назад
@@sleepyNovember_project { std::ofstream file("test.bin", std::ios::binary); std::string str = "hello world"; file.write(str.c_str(), str.size() + 1); file.close(); } { std::ifstream file("test.bin", std::ios::binary); std::string str; char ch = 0; while (file.read(&ch, 1) && ch != '\0') { str.push_back(ch); } std::cout
@bolofficial4076
@bolofficial4076 3 года назад
а зачем использовать Write если можно в самой функции print записывать значение в Фаил?
@АлексейСигаев-е1х
@АлексейСигаев-е1х 3 года назад
Разве на не нужно поместить .close(),в блок else, то есть, если файл не открылся, то зачем его закрывать, и не вызовет ли это ошибки?
@Jessica_Cat-l1v
@Jessica_Cat-l1v 6 месяцев назад
Сергей нам нравиться эта тема и нравятся твои уроки!
@llexDlex
@llexDlex Год назад
ничего непонятно, но очень интересно.
@olegbocharnikov950
@olegbocharnikov950 5 лет назад
у меня там к прошлому уроку
@alexsklemin3708
@alexsklemin3708 2 года назад
Можно вопрос: а если у нас структура работать будет также?
@ruslandad365
@ruslandad365 11 месяцев назад
Лучшие УРОКИ!!!😊😊😊
@ЧеловекСвободный-е4н
Это же сериализация?
@Antonov_Ivan.
@Antonov_Ivan. 10 месяцев назад
Спасибо за урок!
@RrRrRrRroman
@RrRrRrRroman Год назад
Хороший урок!
@артемартемов-у5е
@артемартемов-у5е 3 года назад
спасибо! просто лучший
@ДмитрийБузницкий-б3н
Сергей, спасибо за урок!
@ВітяКоміссаров
@ВітяКоміссаров 2 года назад
спасибо
Далее
ТАРАКАН
00:38
Просмотров 370 тыс.
Witch changes monster hair color 👻🤣 #shorts
00:51
Трудности СГОРЕВШЕЙ BMW M4!
49:41
Просмотров 1,3 млн
ТАРАКАН
00:38
Просмотров 370 тыс.