0 / 0 / 0
Регистрация: 27.06.2019
Сообщений: 1
1

Как бинарно считать вектор из файла ?

27.06.2019, 19:27. Показов 1188. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возник вопрос как считать вектор из файла(запись и считывание бинарные)?
Вот код в котором собственно и возникла проблема.

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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#include "pch.h" 
#include <iostream> 
#include <string> 
#include <string.h> 
#include <vector> 
#include <algorithm> 
#include <fstream>
 
using namespace std;
 
class Students
{
    vector<string> SecondName;
    unsigned int vector_size = SecondName.size();
    vector<int> id;
    
public:
    Students();
    void plus();
    void save();
    void read();
    void delite();
    void massage();
    ~Students();
private:
 
};
Students::Students()
{
 
    
}
void Students::plus()
{
    cout << "How much elements you whant to plus " << endl;
    unsigned int much;
    cin >> much;
    if (much > 0)
    {
        unsigned int temp = vector_size;
        string temp1;
        string buffer1 = "";
        vector <string> elements;
        for (int j = temp; j < temp + much; j++)
        {
            vector_size = vector_size + 1;
 
            cout << "Write an element what you whant plus in your list of student " << endl;
            cin >> temp1;
            SecondName.push_back(temp1);
            unsigned int id_number;
 
            cout << "Write an id" << endl;
            cin >> id_number;
            id.push_back(id_number);
            vector_size = SecondName.size();
        }
        
        for (unsigned int i = 0; i < vector_size; i++)
        {
            cout << "id is " << id[i] << endl;
            cout << "Student's second name " << SecondName[i] << endl;
        }
    }
    else
    {
        cout << "You can't plus zero or more little elements " << endl;
    }
 
}
void Students::delite()
{
    int x;
    unsigned counter = 1;
    cout << "Write an id of element what you whant to delite " << endl;
    cin >> x;
    for (unsigned f = 0; f < vector_size; f++)
    {
 
        if (x == id[f])
        {
            unsigned temp = f;
 
            for (int u = 1; u < vector_size; u++)
            {
                if (temp + u < vector_size)
                {
                    if (x == id[temp + u])
                    {
                        counter = counter + 1;
                    }
                    else
                    {
                        counter = counter;
                    }
                }
            }
            id.erase(remove(id.begin(), id.end(), x), id.end());
 
            SecondName.erase(remove(SecondName.begin(), SecondName.end(), SecondName[f]), SecondName.end());
            vector_size = vector_size - counter;
            for (int r = 0; r < vector_size; r++)
            {
                cout << id[r] << endl;
                cout << SecondName[r] << endl;
            }
        }
    }
 
}
void Students::save()
{
    ofstream out_file("saves.txt", ios::binary | ios::out);
    if (!out_file)
    {
        cout << "you can't open file" << endl;
    }
    
    for (int d = 0; d < SecondName.size(); d++)
    {
        out_file.write((char*)&SecondName[d],SecondName.size());
        
    }
    out_file.close();
    ofstream out_file_1("id_saves.txt", ios::binary | ios::out);
    for (int d = 0; d < SecondName.size(); d++)
    {
        out_file_1.write((char*)&id[d], id.size());
    }
    out_file_1.close();
}
void Students::read()
{
    char ch;
    string temp_string;
    
    ifstream in_file("saves.txt", ios::binary|ios::in);
    in_file.seekg(0);
    if (! in_file)
    {
        cout << "you can't open file" << endl;
    }
    unsigned int temp_size = SecondName.size();
    for (int d=0;d < temp_size;d++)// правил инкремент
    {
        in_file.read((char*)&SecondName[d], SecondName[d].size());
        
    }
    in_file.close();
    SecondName.resize(temp_size);
    vector_size = SecondName.size();
    ifstream in_file_1("id_saves.txt", ios::binary);
    for (int d = 0; d < vector_size; d++)
    {
            //in_file_1.read((char*)&id[d], id.size());
    }
    in_file_1.close();
    for (unsigned int i = 0; i < vector_size; i++)
    {
        cout << "Student's second name " << SecondName[i] << endl;
        cout << "Student's id " << id[i] << endl;
    }
    
    
}
void Students::massage()
{
    cout << "Write w to plus element of  list of students" << endl;
    cout << "Write s to save list of students" << endl;
    cout << "Write d to delite element of list of students" << endl;
    cout << "Write r to show your last list of students" << endl;
}
Students::~Students()
{
    
}
int main()
{
    Students list_of_students;
    char choose;
    list_of_students.massage();
    for (unsigned int g=0;g<10;g++)
    {
        cin >> choose;
        if (choose == 'w' || choose == 'W')
        {
            list_of_students.plus();
            list_of_students.massage();
        }
        if (choose == 'd' || choose == 'D')
        {
            list_of_students.delite();
            list_of_students.massage();
        }
        if (choose == 's' || choose == 'S')
        {
            list_of_students.save();
            list_of_students.massage();
        }
        if (choose == 'r' || choose == 'R')
        {
            list_of_students.read();
            list_of_students.massage();
        }
    }
    system("pause");
    return 0;
}
В программе считывание и запись обязательно бинарные.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2019, 19:27
Ответы с готовыми решениями:

Как считать вектор из файла?
как считать вектор из файла?

Как считать матрицу из файла в двумерный вектор
Доброго времени суток, начал писать шифр Скитала И столкнулся с такой проблемой, но могу считать...

Как бинарно считать все символы со стандартного ввода
Перенаправил набор из символов из файла в свою программу, программа видимо с помощью getc()...

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

2
5987 / 3370 / 1373
Регистрация: 07.02.2019
Сообщений: 8,526
27.06.2019, 19:53 2
Zerokir, https://www.boost.org/doc/libs... index.html

Добавлено через 1 минуту
Можно еще танцы с бубном устроить
0
163 / 70 / 39
Регистрация: 28.05.2019
Сообщений: 241
28.06.2019, 00:36 3
На свой случай сам сделаешь

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main()
{
    string s("666");
 
    ofstream ostr("out.bin");
    auto size = s.size();
    ostr.write((char*)&size, sizeof size);
    ostr.write(s.data(), size);
    ostr.close();
 
    s.clear();
    ifstream istr("out.bin");
    istr.read((char*)&size, sizeof size);
    s.resize(size);
    istr.read(s.data(), size);
    istr.close();
 
    cout << s << endl;
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2019, 00:36
Помогаю со студенческими работами здесь

Считать значения из файла вектор
У меня есть некоторая функция, которая читает элементы из файла в котором значения double и...

Считать посимфольно из файла в char вектор
Например в файле записаны: aaaaaaa bbbbbbb надо считать первую строчку в вектор char...

ifstream (считать матрицу из файла в двумерный вектор)
нужно из файла считать матрицу в двумерный вектор. файл выглядит так: 2 9 6 5 4 8 4 5 8 9 5 4 8...

Считать данные из текстового файла и поместить их в вектор
long int temp; vector&lt;long int&gt; arr; string s; ifstream fin(argv); while (getline(fin,...

Считать слова строк из файла в вектор векторов
допустим есть вектор векторов vector&lt;vector&lt;string&gt;&gt; V1 ; как считать из файла слова, записанные в...

Записать вектор классов в двоичный файл и считать их обратно из файла
Здравствуйте! Необходимо записать вектор классов в двоичный файл и потом считать данные из этого...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru