Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
ComixRu
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 8
1

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

07.05.2016, 09:29. Просмотров 547. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2016, 09:29
Ответы с готовыми решениями:

Запись массива структур в бинарный файл
Есть структура Owner: struct Owner{ char name; unsigned int purse; ...

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

Запись в бинарный файл и чтение из него массива структур
Ребята, выручайте. Огромная проблема с записью и с чтением структуры из...

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

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

3
nimazzzy
Заблокирован
07.05.2016, 10:19 2
string - это класс, внутри которого, вероятнее всего, присутствуют указатели и куча всего. Пытаясь записать его в бинарном виде, ты просто запишешь вместо строки ее адрес в памяти. И, конечно, он потом будет невалидным.
1
ComixRu
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 8
07.05.2016, 18:31  [ТС] 3
string - это класс, внутри которого, вероятнее всего, присутствуют указатели и куча всего. Пытаясь записать его в бинарном виде, ты просто запишешь вместо строки ее адрес в памяти. И, конечно, он потом будет невалидным.
То есть возможность записи в бинарный файл есть только у char *?
0
nimazzzy
Заблокирован
07.05.2016, 18:42 4
Цитата Сообщение от ComixRu Посмотреть сообщение
То есть возможность записи в бинарный файл есть только у char *?
Нет. В файл ты пишешь не char*. char* - это тоже просто адрес. Просто функции, принимающие указатель на буфер для записи, записывают данные расположенные по этому указателю. В струтуре у тебя есть объект класса string. Объект string внутри себя может содержать char*. Но кому какая разница, если мы передали в функцию на запись указатель на струтуру. char* запишется, как он и есть - адресом.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2016, 18:42

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

Запись массива структур в файл
Запись массива структур в файл так, что бы потом можно было считывать, удалять...

Fwrite и freed, запись массива структур в файл
Структура struct str { int date; }; Запись в структуру void GetData(str...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru