Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 14.09.2015
Сообщений: 9
1

Запись структур в файл

15.12.2015, 20:43. Показов 5166. Ответов 5

Author24 — интернет-сервис помощи студентам
можно ли сделать так что бы структуру base, которую нужно записать несколько раз в файл а потом считать, без константы MAX и без ее ввода,как сделать что бы пользователь вводил нужное количество таких структур а потом что бы они все выводились?


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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
  struct base
    {
       string name;
       string work;
       string year;
    };
int main()
{
    int const MAX=2; //кол-во экземпляров структуры//
    base b[MAX];
       for (int i=0;i<MAX;++i)
          {
              cout << "Enter name :" << endl;
              cin >> b[i].name;
              cout << "Enter work :" << endl;
              cin >> b[i].work;
              cout << "Enter year :" << endl;
              cin >> b[i].year;
       }
 
    ofstream outfile;
    outfile.open("Out.txt");
       for (int i=0;i<MAX;++i)
            cout << b[i].name << " " << b[i].work << " " << b[i].year << endl;
 
       cin.get();
       return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2015, 20:43
Ответы с готовыми решениями:

Запись структур в файл
Здравствуйте! Имеется структура struct user { char login; char password; }; Записываю...

Запись структур в файл
У меня есть файл и масив структур. Надо реализовать запись и чтения файла. Можна ли сделать так:...

Запись структур в файл
Доброго всем времени суток.:dance: Обращаюсь к вам с таким вопросом : Взяв за основу Задача 2...

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

5
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
15.12.2015, 20:57 2
Вопрос непонятен.

Добавлено через 1 минуту
Цитата Сообщение от barcheta Посмотреть сообщение
как сделать что бы пользователь вводил нужное количество таких структур
Нужное количество как собираешься задавать?
0
0 / 0 / 0
Регистрация: 14.09.2015
Сообщений: 9
15.12.2015, 21:03  [ТС] 3
а можно без ввода заранее нужного количества,так что бы пользователь сразу начал ввод структур,ввел столько сколько нужно,а потом все вывести на экран?
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
15.12.2015, 21:40 4
Лучший ответ Сообщение было отмечено barcheta как решение

Решение

Можно. Делай цикл while() (или do while), объявляй временную структуру, делай ввод данных (cin), запись структуры в файл, потом вопрос: "Записать ещё?", если нет, то закрываешь файл и выходишь из цикла. Потом открываешь файл для чтения, цикл while(), в параметрах цикла - чтение данных во временную структуру, в теле цикла - вывод считанных данных на консоль.

Добавлено через 12 минут
Как-то, так:
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
struct base
{
    string name;
    string work;
    string year;
};
    
int main()
{
    ofstream outfile("Out.txt");
    base b;
    char ch;
    do
    {
            cout << "Enter name :" << endl;
            cin >> b.name;
            cout << "Enter work :" << endl;
            cin >> b.work;
            cout << "Enter year :" << endl;
            cin >> b.year;
            outfile << b.name << " " << b.work << " " << b.year << endl;
 
            cout << "More? (y/n): ";
            cin >> ch;
    } while (ch != 'n');
    
    outfile.close();
 
    ifstream fin("Out.txt");
    if (fin)
    {
        while (fin >> b.name >> b.work >> b.year)
            cout << b.name << " " << b.work << " " << b.year << endl;
        fin.close();
    }
    else
        cout << "Error!" << endl;
 
    cin.get();
    cin.get();
    return 0;
}
0
0 / 0 / 0
Регистрация: 14.09.2015
Сообщений: 9
15.12.2015, 22:00  [ТС] 5
Спасибо
Только как происходит запись и считывание структуры в файл,для этого разве не нужно строка outfile.write((char*)&work,sizeof(work)); ,и зачем она вообще нужна если структура и так записаться,раньше я писал с ней?
И если можно объясните как работает второй цикл,не могу понять как одна и та же строка выводит поочередно структуры,ну или статейку на эту тему.и что делает эта строка:while (fin >> b.name >> b.work >> b.year)?
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
15.12.2015, 22:09 6
Лучший ответ Сообщение было отмечено barcheta как решение

Решение

Цитата Сообщение от barcheta Посмотреть сообщение
Только как происходит запись и считывание структуры в файл,для этого разве не нужно строка outfile.write((char*)&work,sizeof(work));
Вот так запись полей структуры в файл (через пробел, поля должны быть из одного слова, в одной строке - одна структура):
Цитата Сообщение от nord_v Посмотреть сообщение
outfile << b.name << " " << b.work << " " << b.year << endl;
Вот так чтение полей структуры из файла:
Цитата Сообщение от nord_v Посмотреть сообщение
while (fin >> b.name >> b.work >> b.year)
Заодно, здесь while() проверяет правильность чтения (при чтении EOF происходит выход из цикла).
Цитата Сообщение от barcheta Посмотреть сообщение
разве не нужно строка outfile.write((char*)&work,sizeof(work));
Для string бинарные методы записи/чтения не подходят.
0
15.12.2015, 22:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2015, 22:09
Помогаю со студенческими работами здесь

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

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

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

Запись массива структур в бинарный файл
Одно из полей структуры типа String, нужно записать массив структур в бинарный файл: struct...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru