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

Запись массива структур в бинарный файл

07.05.2016, 09:29. Показов 2329. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Одно из полей структуры типа String, нужно записать массив структур в бинарный файл:
C++
1
2
3
4
5
6
7
8
struct NOTEBOOK {
    string model; // наименование
    double w; // вес
    int price;// цена
    float x;
    float y;
    float z;
};
Написал такую функцию, но записывается все как-то не правильно (проверял в HxD)
C++
1
2
3
4
5
6
7
8
9
10
void fout(NOTEBOOK *notebook) 
{
    ofstream output("output.dat", ios::binary | ios::out);
 
    for (int i = 0; i < sizeof(NOTEBOOK); i++)
    {
        output.write(reinterpret_cast<char*>(&notebook[i]), sizeof(NOTEBOOK)); 
    }
    output.close();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.05.2016, 09:29
Ответы с готовыми решениями:

Запись массива структур в бинарный файл
Есть структура Owner: struct Owner{ char name; unsigned int purse; short catb; void addcat(short num); }; ...

Запись/чтение массива структур в бинарный файл
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; struct test { int x; int y; };

Запись в бинарный файл и чтение из него массива структур
Здравствуйте, появилась проблема записью структуры в бинарный файл и чтение из него этой же структуры. Я находил код с записью char, но я...

3
Заблокирован
07.05.2016, 10:19
string - это класс, внутри которого, вероятнее всего, присутствуют указатели и куча всего. Пытаясь записать его в бинарном виде, ты просто запишешь вместо строки ее адрес в памяти. И, конечно, он потом будет невалидным.
1
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 8
07.05.2016, 18:31  [ТС]
string - это класс, внутри которого, вероятнее всего, присутствуют указатели и куча всего. Пытаясь записать его в бинарном виде, ты просто запишешь вместо строки ее адрес в памяти. И, конечно, он потом будет невалидным.
То есть возможность записи в бинарный файл есть только у char *?
0
Заблокирован
07.05.2016, 18:42
Цитата Сообщение от ComixRu Посмотреть сообщение
То есть возможность записи в бинарный файл есть только у char *?
Нет. В файл ты пишешь не char*. char* - это тоже просто адрес. Просто функции, принимающие указатель на буфер для записи, записывают данные расположенные по этому указателю. В струтуре у тебя есть объект класса string. Объект string внутри себя может содержать char*. Но кому какая разница, если мы передали в функцию на запись указатель на струтуру. char* запишется, как он и есть - адресом.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2016, 18:42
Помогаю со студенческими работами здесь

Запись в бинарный файл и чтение из него массива структур
Ребята, выручайте. Огромная проблема с записью и с чтением структуры из бинарного файла. Помогите кто чем может. void bin_w() { int...

Считывание и запись структур в бинарный файл
Здравствуйте, я делаю автоподгрузку и авто сохранение некоторой структуры в бинарный файл. И где-то допустил грубую ошибку, ибо...

Запись и чтение вектора структур в бинарный файл(2)
Есть заполненный вектор структур. Структура вида: struct struc { string a; int x; map&lt;int, int&gt;m; }; ...

Запись и чтение вектора структур в бинарный файл
Есть заполненный вектор структур. Структура вида: struct struc { string a; int x; map&lt;int, int&gt;m; }; Написал две...

Ввод и вывод динамического массива структур в бинарный файл
Добрейшего вечерочка, дамы и господа. Есть программа, которая считывает массив структур из бинарнника, помещает его в динамический массив...


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

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

Новые блоги и статьи
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
Настройка MTProxy
Loafer 11.06.2025
Дополнительная информация к инструкции по настройке MTProxy: Перед сборкой проекта необходимо добавить флаг -fcommon в конец переменной CFLAGS в Makefile. Через crontab -e добавить задачу: 0 3. . .
Изучаем Docker: что это, как использовать и как это работает
Mr. Docker 10.06.2025
Суть Docker проста - это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнер, если говорить образно, это запечатанная коробка, в которой находится ваше приложение вместе. . .
Тип Record в C#
stackOverflow 10.06.2025
Многие годы я разрабатывал приложения на C#, используя классы для всего подряд - и мне это казалось естественным. Но со временем, особенно в крупных проектах, я стал замечать, что простые классы. . .
Разработка плагина для Minecraft
Javaican 09.06.2025
За годы существования Minecraft сформировалась сложная экосистема серверов. Оригинальный (ванильный) сервер не поддерживает плагины, поэтому сообщество разработало множество альтернатив. CraftBukkit. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru