0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 16

Как правильно записать в бинарный файл структуру, в которой есть string?

08.06.2019, 23:57. Показов 2517. Ответов 21

Студворк — интернет-сервис помощи студентам
Предположим есть вот такая структура
C++
1
2
3
4
5
struct MyStruct
{
    int number;
    string str;
};
Её надо записать в бинарный файл, с таким условием что мы передаем всю структуру, а не отдельные её части для записи

Так работать не будет
C++
1
2
MyStruct ms;
file.read((char*)&ms,sizeof(MyStruct ));
Пробовала считывать размер того что вписал пользователь и это передать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cout<<"Vvedite kol-vo struct"<<endl;
    cin >> k;
    for(int i = 0; i<k; i++){
        cout<< i+1 <<" struct: " << endl;
        cout << "number\n";
        cin >> ms.number;
        cin.ignore();
        cout << endl << "str\n";
        getline(cin, ms.str, '\n');
        cin.clear();
        size = sizeof(ms.number) + ms.str.length() + 1;
        file.read((char*)&ms,sizeof(size));
        size = 0;
}
Лучше не стало, если запустить отдельно считывание из файла, выводит что-то не понятное
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.06.2019, 23:57
Ответы с готовыми решениями:

Как правильно сохранить и потом считать структуру в бинарный файл
Есть структура struct card { int size; char *lear; int *name; }; Эта структура это карты игрока. Заполняем ее данными, у...

Как класс string записать в бинарный файл через вектор?
вопрос такой у меня есть класс. я создаю вектор по этому классу vector&lt;Employee&gt; work; вектор отлично заполняется и вся программа...

Как правильно записать символьный массив в бинарный файл?
Хочу записать в бинарный файл две строки. 1 - &quot;даня&quot;, 2 - &quot;маша&quot;. открываю так: ofstream...

21
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 16
09.06.2019, 14:04  [ТС]
Студворк — интернет-сервис помощи студентам
gng, Но изучение сериализации не было...(
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
09.06.2019, 18:20
Цитата Сообщение от varyahoch Посмотреть сообщение
Ну видимо именно как кусок памяти
например если б не было этого string, то та строчка работала б как часы, но это мы уже проходили
Я так понимаю, что, раз вы проходили запись структур в файл, ты решила, что и с std::string проканает.
Нет, записывать и читать так можно только структуры определённого вида - которые не содержат указателей на другие объекты/массивы.
Для остальных (а таких, как правило, большинство) надо делать специальные методы (ну или операторы), которые будут сохранять/читать содержимое этих указателей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2019, 18:20

Записать структуру в бинарный файл
ЛЮДИ подскажите кто знает,чувствую,что ответ где то рядом,а где найти не могу:( Пусть есть структура,которую надо занести в бинарный файл...

Записать структуру в бинарный файл
Всем доброго времени суток. у меня такая проблема, мне нужно перекинуть в бинарный файл структуру. Структуру создала, все сделала. Файл...

Не получается прочесть правильно текстовый файл в структуру а затем в бинарный файл
Нужно просто прочесть файл в структуру данных а потом оттуда записать в бинарный файл Вот как выглядит текстовый файл: 11122 Mary...

Как записать структуру в бинарный файл одним "блоком"
Как записать структуру в бинарный файл одним &quot;блоком&quot;, если в структуре есть private данные? struct MyStruct{ char Name; ...

Правильно записать бинарный файл
У меня имеется структура с массивом типа unsigned char и строкой string. Я пытаюсь записать число и небольшую &quot;подпись&quot; в...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru