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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 51, средняя оценка - 4.98
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
#1

Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава) - C++

08.12.2010, 18:59. Просмотров 6370. Ответов 40
Метки нет (Все метки)

Доброго времени суток.
В очередной раз обращаюсь за советом касательно разъяснения задачи
Другим подходом к добавлению файлового потока к объекту является превращение самого этого потока в
статическую компоненту объекта. Для чего это делается? Ну, часто бывает проще представить себе поток связанным
с классом в целом, а не с отдельными его объектами. К тому же, гораздо правильнее открывать поток только один
раз для записи и чтения всего, что нужно. Например, мы открываем файл и начинаем последовательное чтение.
Функция чтения всякий раз возвращает данные для следующего объекта. Указатель файла сдвигается при этом
автоматически, так как между чтениями файл мы не закрываем.
Понимаю типы ifstream, ofstream как записать в файл класс, как считать. Но тут что делать вообще не понимаю.
Как полностью считать в
C++
1
static fstream file
весь файл, как из этого
C++
1
file
выдирать нужную запись\

Вот решенная задача которую нужно переделать\ (в ней вроде бы все просто)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include<iostream>
#include<fstream>
using namespace std;
class Persona
{
private:
    int number;
    char surname[15];
    char name[15];
    char surname2[15];
public:
    void bern()
    {
        ofstream file;
        file.open("Persona1204.dat",ios::binary|ios::app);
        file.write((char*)this,sizeof(*this));
        file.close();
    }
    void read(int a)
    {
        ifstream file;
        file.open("Persona1204.dat",ios::binary);
        file.seekg((a-1)*sizeof(Persona));
        file.read((char*)this,sizeof(*this));
        file.close();
    }
    static int count()
    {
        ifstream file;
        file.open("Persona1204.dat",ios::binary);
        file.seekg(0,ios::end);
        return (int)(file.tellg()/sizeof(Persona));
    }
    friend istream& operator>>(istream& s,Persona& p)
    {
        cout << "Введите номер: ";
        s >> p.number;
        cout << "Введите фамилию: ";
        s >> p.surname;
        cout << "Введите имя: ";
        s >> p.name;
        cout << "Введите отчество: ";
        s >> p.surname2;
        p.bern();
        return s;
    }
    friend ostream& operator<<(ostream& s,Persona& p)
    {
        int a;
        s << "Всего записей: " << p.count() << endl;
        s << "Какую вывести: ";
        cin >> a;
        p.read(a);
        s << p.number << "\t" << p.surname << "\t" << p.name << "\t" << p.surname2 << endl;
        return s;
    }
};
int main()
{
    setlocale(LC_ALL,"Russian");
    Persona p;
    //cin >> p;
    cout << p;
    return EXIT_SUCCESS;
}
Добавлено через 39 минут
И немного хотелось бы разьяснения понятия файловый поток с физической точки зрения.
Как я понимаю - это как бы "мост" между файлом и пользователем

Добавлено через 52 минуты
Товарищи Гуру. хотелось бы услышать хоть намек, куда смотреть)

Добавлено через 3 часа 41 минуту
Апну на правах важности темы)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2010, 18:59     Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава)
Посмотрите здесь:

C++ Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод?
Считывание числа поциферно (задача Лафоре, 3 глава, объяснить код) C++
Упражнение из книги Лафоре C++
C++ Сокращение программы, приводит к другому результату. Лафоре 3 глава, 3 задача
Лафоре. Глава 11. Задача 2 C++
C++ Поменять консольный ввод-вывод на файловый ввод-вывод
C++ Что я сделал не так? Прата С. Глава 2. Упражнение 3
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2016, 04:23     Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава)
Еще ссылки по теме:

C++ Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод
C++ Решить задачу на файловый ввод/вывод (игра "Города")
Упражнение по программированию (Стивен Прата, глава 2, упражнение 3) C++
C++ Упражнение №8 глава 5 из книги Страуструпа
Правильное ли решение задачи? Лафоре. 3 глава 9 задача C++

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

Или воспользуйтесь поиском по форуму:
nd2
1770 / 1452 / 504
Регистрация: 29.01.2016
Сообщений: 4,501
31.10.2016, 04:23     Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава) #41
Цитата Сообщение от hoggy Посмотреть сообщение
не желаете показывать файл с данными
С содержимым там всё в порядке?
Yandex
Объявления
31.10.2016, 04:23     Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава)
Ответ Создать тему
Опции темы

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