Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
6 / 5 / 2
Регистрация: 08.09.2019
Сообщений: 157

Заполнить структуру из файла

09.11.2019, 17:08. Показов 2513. Ответов 4

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
struct Library {
vector<string>FIO;
vector<string>Group;
vector <int>marks;
};
int main()
{
vector<Library>arr
 
 
}
Нужно заполнить структуру с файла
В файле
Петров_А_И 123а 5
Иванова_А_Ю 234б 5
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2019, 17:08
Ответы с готовыми решениями:

заполнить структуру с файла
struct life{ int age; string name; int salary;}; vector&lt;life&gt;lif; В файле: 21 Вася

Заполнить структуру с файла
Уважаемые программисты. Нужен Ваш совет. Есть структура struct Info { int number; string name; bool survived; }

Заполнить структуру данными из бинарного файла
Мне нужно заполнить структуру Note данными из бинарного файла. У меня есть такие структуры: struct Name { string First_Name;//имя ...

4
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,750
09.11.2019, 18:48
не смешите, на бред, который несет человек в бреду никто не ответит

структуры вы пока не поняли, до класса еще не доросли
0
6 / 5 / 2
Регистрация: 08.09.2019
Сообщений: 157
09.11.2019, 19:00  [ТС]
marat_miaki,
Как сделать тогда что-то подобное, правильно?
Чтобы оно хоть как-то работало
В текстовом файле хранится список книг в библиотеке: название, автор, количество имеющихся экземпляров, издательство, жанр, год издания. Во втором файле сохраняется информация о выдаче книг: дата выдачи, дата возвращения, название книги, автор, фамилия и имя читателя
Две недели кручу но не как, много подобных вопросов писал много просто не работает . Не получается правильно заполнить структуру из файла
0
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,750
09.11.2019, 19:35
чтоб правильно прочитать структуру с файла она должна быть правильно написана. В первую очередь правильно организовать структуру ваших данных, на основе имеющихся в файле данных или на основе вашей структуры, т. е определиться с типами данных, нельзя же все загнать в string, каждый тип можно по разному прочитать, есть особенности, разделители. Если вы пытались прочесть текст файла 10.09.2019 01.09.2019 Hamlet_Prince_of_Denmark William_Shakespeare tragedy Ivanov_Sergey
getline(fin, dat[i].date_from,';') в структуру где string, как минимум должны были знать что означает при этом три аргумента getline(), тем более третий

Добавлено через 8 минут
Обработка данных "Библиотека"
с разных месть куски можете копировать, но сколько векторов успели понасоздавать при копировании, подсчитайте, вам должно было хватить 2 как минимум...

Добавлено через 48 секунд
то же самое со структурой
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,060
Записей в блоге: 3
09.11.2019, 20:42
Лучший ответ Сообщение было отмечено helsi как решение

Решение

Цитата Сообщение от helsi Посмотреть сообщение
Как сделать тогда что-то подобное, правильно?
Чтобы оно хоть как-то работало
вот всё работает из того что заявлено в коде:
добавьте поля по вкусу.
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
 
const char* namefile = "base.txt";
 
struct MAN
{   MAN()
    {   
    }
    void input()
    {   std::cout << "FIO:   "; getline(std::cin, FIO);
        std::cout << "Group: "; getline(std::cin, Group);
        std::cout << "marks: "; getline(std::cin, marks);
        std::cout << "\n";
    }
    std::string FIO;
    std::string Group;
    std::string marks;
    
    void info()
    {   std::cout << "FIO:   " << FIO   << "\n";
        std::cout << "Group: " << Group << "\n";
        std::cout << "marks: " << marks << "\n";
        std::cout << "\n";
    }
    
    //------------------------------------------------------------------------->
    void   serialization(std::ofstream& file)
    {   file << FIO << " " << Group << " " << marks << "\n";
    }
    bool deserialization(std::ifstream& file)
    {   file >> FIO >> Group >> marks;
        return !file.eof();
    }
};
 
struct Library
{   Library()
    {                                 std::cout << 
        "|---------------------------------|\n" <<
        "| Создаём: Library lib;           |\n" <<
        "|---------------------------------:\n";
    }
    std::vector<MAN> arr;
    
    void input()
    {   int n = 3;
        while(n--)
        {   MAN man;
            man.input();
            arr.push_back(man);
        }
    }
    
    void info()
    {                                 std::cout << 
        "|---------------------------------|\n" <<
        "| База дровосеков на лесопилке.   |\n" <<
        "|---------------------------------:\n";
        for(int i = 0; i < arr.size(); ++i)
        {   arr[i].info();
            std::cout << "\n";
        }
    }
    
    // Пишем в файл:
    void write_in_file()
    {   std::cout << "Пишем в файл!\n";
        std::ofstream file(namefile);
        for(int i = 0; i < arr.size(); i++)
        {   arr[i].serialization(file);
        }
        file.close();
    }
 
    // Читаем из файла:
    bool read_out_file()
    {   std::cout << "Читаем из файла!" << "\n";
        std::ifstream file(namefile);
        if (!file.is_open())
        {   std::cout << "Ошибка чтения файла \"" << namefile << "\"\n";
            return true;
        };
        bool f = true;
        while(f)
        {   arr.push_back(MAN());
            f = arr.back().deserialization(file);
        }
        file.close();
        return false;
    }
};
 
int main()
{   setlocale(0,"");
 
    Library lib1;
            lib1.input();
            lib1.info();
            lib1.write_in_file();
            
    Library lib2;
            lib2.read_out_file(); /// Читаем из файла.
            lib2.info();          /// Выводим на экран.
    
    std::cin.get();
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2019, 20:42
Помогаю со студенческими работами здесь

Как заполнить структуру в цикле
Добрый день, как можно заполнить структуру с помощью цикла while или do while То есть в структуре есть 4 члена: 1. Имя работника ...

Создать структуру с указанными полями и заполнить ее
Создать структуру с полями : Ф.И.О. студента, группа , оценка , стипендия. Ввести 5 записей с информацией фио, группа, оценка, в поле...

Заполнить массив-структуру используя цикл
Здравствуйте.Задача: заполнить структуру значениями #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &quot;stdafx.h&quot; ...

Создать структуру, используя потоки заполнить масив структурами и отсортировать
Помогите, никак не могу закончить програму. Как через поток записать существующие (записаные в файле данные) в масив? #include &lt;...

Используя контейнер vector заполнить структуру как таблицу и вывести ее
создать класс с переменными типа int,float,string: Через вектор заполнить как таблицу и вывести ее #include&lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru