Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

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

ifstream / ofstream - C++

29.01.2010, 12:35. Просмотров 6640. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2010, 12:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ifstream / ofstream (C++):

ifstream пара вопросов - C++
ifstream in("a.in"); if (!in) { cout << "It`s impossible to open file!\n"; }; объясните...

Изменить символ разделитель ifstream - C++
Доброго времени суток! Решил создать некую программу и наткнулся на одну проблему. Функция ifstream при считывании данных из файла в...

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

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

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

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

4
Зоти Сергей
228 / 226 / 13
Регистрация: 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
Spellz
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
Зоти Сергей
228 / 226 / 13
Регистрация: 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
Spellz
1 / 1 / 0
Регистрация: 29.01.2010
Сообщений: 25
29.01.2010, 14:44  [ТС] #5
Спасибо вам большое, заработало)
0
29.01.2010, 14:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2010, 14:44
Привет! Вот еще темы с ответами:

ifstream::read, не хочет выводить результат - C++ Builder
Есть вот такой вот код, что-то не выводится результат ifstream ifs; ...

ifstream ofstream - C++
как работают данные файловые операции, объясните пожалуйста куда происходит запись ена жёстком диске

C++ файлы ifstream/ofstream - C++
Доброе время суток нужна небольшая помощь с записью/считыванием из файла вообщем при считывание из файла eof() не определяет конца файла и...

ifstream/ofstream/fstream - C++
#include &lt;fstream&gt; fstream autosave; autosave.open(&quot;...autosave.txt&quot;); char x; autosave &lt;&lt; x; cout &gt;&gt;...


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

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

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