Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 53, средняя оценка - 4.87
Spellz
1 / 1 / 0
Регистрация: 29.01.2010
Сообщений: 25
#1

ifstream / ofstream - C++

29.01.2010, 12:35. Просмотров 6454. Ответов 4
Метки нет (Все метки)

Доброго времени суток.
И сразу к проблеме. Делаю вывод в файл объектов класса для их последующего считывания и обрабатывания.
C++
1
2
3
4
5
6
7
8
9
        ofstream fout ("test.txt", ios::binary);
        fout.write((char*) &obj1, sizeof obj1);
        fout.write((char*) &obj2, sizeof obj2);
        fout.close();
 
        ifstream fin ("test.txt", ios::binary);
        Object obj3
        //fin.seekg(0,sizeof obj1);
        fin.read((char*) &obj3, sizeof obj3);
Собственно этот кусок кода должен добавить в файл 2 объекта класса, после чего, создав третий ,считать в него информацию второго объекта. Проблема в закоментированной строке - если ее разкоментировать прога крашиться.

Возможно я не доконца понял как работает считывание из файла и сдвиг точки просмотра. Вообщем помогите кто чем сможет )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2010, 12:35     ifstream / ofstream
Посмотрите здесь:

C++ ifstream/ofstream/fstream
Работа с файлами через ifstream/ofstream C++
C++ ifstream, ofstream и объекты класса
Функции ifstream , ofstream. Исправить C++
Работаем с потоками на C++ ofstream и ifstream C++
сокращенная запись ifstream и ofstream C++
C++ C++ файлы ifstream/ofstream
class/string/ifstream/ofstream C++
ifstream ofstream C++
Неправильно выполнение ifstream, ofstream C++
Перегрузка ifstream и ofstream? C++
Работа с потоками ofstream/ifstream C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
29.01.2010, 14:26     ifstream / ofstream #2
В данном случае, если вам нужно считать obj2
напишите

C++
1
2
fin.seekg(sizeof(Object));
fin.read((char*) &obj3, sizeof(Object));
а если obj1 то

C++
1
2
fin.seekg(0);
fin.read((char*) &obj3, sizeof(Object));
Spellz
1 / 1 / 0
Регистрация: 29.01.2010
Сообщений: 25
29.01.2010, 14:37  [ТС]     ifstream / ofstream #3
К сожалению не работает
C++
1
2
fin.seekg(sizeof(Object));
fin.read((char*) &obj3, sizeof(Object));
не сдвигает точку просмотра, программа по прежнему читает первый объект, второй остается нетронутым (
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
29.01.2010, 14:42     ifstream / ofstream #4
Если же делать так, как вы хотели, то

читать данные с нуля от начала файла
C++
1
2
fin.seekg(0,ios::beg);
fin.read((char*) &obj3, sizeof(obj3));
читать данные с sizeof(obj3) от начала файла
C++
1
2
fin.seekg(sizeof(obj3),ios::beg);
fin.read((char*) &obj3, sizeof(obj3));
Добавлено через 3 минуты
Вот, так, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//---------------------------------------------------------------------------
#include <fstream.h>
#include <conio.h>
#include <stdio.h>
struct Object
{
    int a;
        int b;
};
int main(int argc, char* argv[])
{
    Object obj1;
        Object obj2;
        obj1.a=10;
        obj1.b=20;
        obj2.a=30;
        obj2.b=40;
 
    ofstream fout ("test.txt", ios::binary);
        fout.write((char*) &obj1, sizeof obj1);
        fout.write((char*) &obj2, sizeof obj2);
        fout.close();
 
        ifstream fin ("test.txt", ios::binary);
        Object obj3;
 
        fin.seekg(sizeof(Object));
        fin.read((char*) &obj3, sizeof obj3);
        printf("%d\n",obj3.a);
 
        fin.seekg(0,ios::beg);
        fin.read((char*) &obj3, sizeof obj3);
        printf("%d\n",obj3.a);
 
        getch();
 
}
//---------------------------------------------------------------------------
Spellz
1 / 1 / 0
Регистрация: 29.01.2010
Сообщений: 25
29.01.2010, 14:44  [ТС]     ifstream / ofstream #5
Спасибо вам большое, заработало)
Yandex
Объявления
29.01.2010, 14:44     ifstream / ofstream
Ответ Создать тему
Опции темы

Текущее время: 04:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru