Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/44: Рейтинг темы: голосов - 44, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 29.01.2010
Сообщений: 25
1

ifstream / ofstream

29.01.2010, 12:35. Показов 8168. Ответов 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 объекта класса, после чего, создав третий ,считать в него информацию второго объекта. Проблема в закоментированной строке - если ее разкоментировать прога крашиться.

Возможно я не доконца понял как работает считывание из файла и сдвиг точки просмотра. Вообщем помогите кто чем сможет )
1

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2010, 12:35
Ответы с готовыми решениями:

ifstream пара вопросов
ifstream in("a.in"); if (!in) { cout << "It`s impossible to open...

Изменить символ разделитель ifstream
Доброго времени суток! Решил создать некую программу и наткнулся на одну проблему. Функция...

Почему функция seekp() работает только с классом ostringstream и не хочет использоваться с ofstream
Всем привет! Уважаемые программисты, подскажите пожалуйста, почему функция seekp() работает...

Ошибка с ofstream и ifstream
Выдаёт ошибки на ofstream F и ifstream G . Много пересмотрел материалов , но ответа на вопрос не...

4
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
29.01.2010, 14:26 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));
0
1 / 1 / 0
Регистрация: 29.01.2010
Сообщений: 25
29.01.2010, 14:37  [ТС] 3
К сожалению не работает
C++
1
2
fin.seekg(sizeof(Object));
fin.read((char*) &obj3, sizeof(Object));
не сдвигает точку просмотра, программа по прежнему читает первый объект, второй остается нетронутым (
0
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
29.01.2010, 14:42 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();
 
}
//---------------------------------------------------------------------------
1
1 / 1 / 0
Регистрация: 29.01.2010
Сообщений: 25
29.01.2010, 14:44  [ТС] 5
Спасибо вам большое, заработало)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2010, 14:44

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Задача с потоками ofstream и ifstream
Задача, есть форма с PageControl и три вкладки TabSheet на каждой вкладке находится StringGrid мне...

Замена произвольной строки в текстовом файле с использованием ifstream\ofstream
Здравствуйте. Есть текстовый файл с содержанием слов и цифр: 0 слово 1 слово 2 слово 3 ...

ofstream savedialog и две формы
почему то не работает, но если перенести все в одну кнопку, а переменную i в файле оставляю,...

Не сохраняется файл с абсолютным именем, ofstream
На Win7 пытаюсь вывести данные в файл: ofstream fout(&quot;C:\\data.txt&quot;); Если делать вывод...


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

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

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