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

fstream удаление построчно

25.04.2020, 18:33. Показов 1054. Ответов 2

Author24 — интернет-сервис помощи студентам
Пишу программу, типа базы данных, где нужно реализовать удаление построчно, это сделать получилось, но после самого удаление, когда выбираю четвертый кейс, то на консоль начинает бесконечно выводиться \n, не могу понять в чем ошибка
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include<fstream>
#include <Windows.h>
#include<vector>
#include <iterator>
using namespace std;
 
int getValue()
{
    while (true)
    {
 
        int a;
        cin >> a;
 
 
        if (std::cin.fail())
        {
            cin.clear();
            cin.ignore(32767, '\n');
            cout << "Неверное значение, попробуйте снова\n";
        }
        else
        {
            cin.ignore(32767, '\n');
 
            return a;
        }
    }
}
 
bool remove_line(const char *filename, size_t index)
{
 
    vector<string> vec;
    ifstream file(filename);
    if (file.is_open())
    {
        string str;
        while (getline(file, str))
            vec.push_back(str);
        file.close();
        if (vec.size() < index)
            return false;
        vec.erase(vec.begin() + index);
        ofstream outfile(filename);
        if (outfile.is_open())
        {
            copy(vec.begin(), vec.end(), 
                ostream_iterator<string>(outfile, "\n"));
            outfile.close();
            return true;
        }
        return false;
    }
    return false;
}
class Personnel
{
private:
    string Name;
    string SecondName;
    string ThirdName;
    string Podrazdelenie;
    int Otdel;
    string Dolznost;
    int Razryad;
    
public:
    string GetName()
    {
        return Name;
    }
    string GetSecondName()
    {
        return SecondName;
    }
    string GetThirdName()
    {
        return ThirdName;
    }
    string GetPodrazdelenie()
    {
        return Podrazdelenie;
    }
    int GetOtdel()
    {
        return Otdel;
    }
    string GetDolznost()
    {
        return Dolznost;
    }
    int GetRazryad()
    {
        return Razryad;
    }
    
    void input()
    {
        cout << "Введите имя работника\n";
        SetConsoleCP(1251);
        cin >> Name;
        SetConsoleCP(866);
        cout << "Введите фамилию работника\n";
        SetConsoleCP(1251);
        cin >> SecondName;
        SetConsoleCP(866);
        cout << "Введите отчество работника\n";
        SetConsoleCP(1251);
        cin >> ThirdName;
        SetConsoleCP(866);
        cout << "Введите подразделение работника\n";
        SetConsoleCP(1251);
        cin >> Podrazdelenie;
        SetConsoleCP(866);
        cout << "Введите отдел работника\n";
        cin >> Otdel;
        cout << "Введите должность работника\n";
        SetConsoleCP(1251);
        cin >> Dolznost;
        SetConsoleCP(866);
        cout << "Введите разряд работника\n";
        cin >> Razryad;
    }
    
    void output()
    {
        cout << "Имя: " << Name << " " << "Фамилия: " << SecondName << " " << "Отчество: " << ThirdName << " " << "Подразделение: " << Podrazdelenie << " " << "Отдел: " << Otdel << " " << "Должность: " << Dolznost << " " << "Разряд: " << Razryad << endl;
    }
};
 
 
 
 
int main()
{
    setlocale(LC_ALL, "ru");
    string path = "spisok.txt";
    Personnel human;
    fstream fs;
    bool check = true;
    int choise;
    string line;
    int num = 1;
    int a;
    while (check) {
        cout << "1. Добавить\n";
        cout << "2. удалить\n";
        cout << "4. Посмотреть список\n";
        cout << "5. Удалить все \n";
        cin >> choise;
 
        switch (choise)
        {
        case 1:
 
            fs.open(path, fstream::in | fstream::out | fstream::app);
            if (!fs.is_open())
            {
                cout << "ошибка открытия файла";
            }
            else
            {
                human.input();
                fs <<num<<". "<< "ФИО: " << human.GetName() << " "<< human.GetSecondName() << " "<< human.GetThirdName() << " " << "Подразделение: " << human.GetPodrazdelenie() << " " << "Отдел: " << human.GetOtdel() << " " << "Должность: " << human.GetDolznost() << " " << "Разряд: " << human.GetRazryad() << endl;
                num++;
            }
            fs.close();
            break;
        case 2:
            fs.open(path, fstream::in | fstream::out | fstream::app);
            cout << boolalpha << remove_line("spisok.txt", 0);
 
            break;
        
        case 4:
            fs.open(path, fstream::in | fstream::out | fstream::app);
            while (!fs.eof())
            {
            getline(fs, line);
            cout << line << endl;
            }
            fs.close();
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2020, 18:33
Ответы с готовыми решениями:

Удаление файла *.txt через библиотеку <fstream>
Здравствуйте! Хочу использовать временный файл,для сохранения в нем главной информации,если...

Очистка/удаление файла *.txt с помощью fstream
Как с помощью#include &lt;fstream&gt; очистить/удалить файл по заданному пути?

Прочесть файл построчно и занести его в структуру с помощью fstream
как сделать чтобы прочесть файл построчно и занести его в структуру с помощью fstream.h

Как данные, посылаемые построчно из Arduino по СОМ-порту, записать построчно в текстовый файл?
Программирование для меня - неосновная область работы. Поэтому ищу готовые решения. И меня крепко...

2
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
25.04.2020, 18:37 2
Лучший ответ Сообщение было отмечено Daniel12321 как решение

Решение

По case 2 почему файл не закрывается?
1
0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 4
25.04.2020, 18:40  [ТС] 3
О боже, даже стыдно как-то, что из-за такого пришлось вопрос задавать, спасибо
0
25.04.2020, 18:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2020, 18:40
Помогаю со студенческими работами здесь

Считывание из файла построчно и запись в файл построчно getline ()
# include &lt;iostream&gt; # include &lt;vector&gt; # include &lt;fstream&gt; # include &lt;string&gt; using...

Запись массива в файл (построчно) и чтение (построчно)
Добрый вечер форумчане. По заданию необходимо : %Кодер 1) Записать звук в массив с помощью...

Открываются 2 текстовых файла, сложить построчно числа из 1 и 2 файла, сумму вывести в третий файл построчно
Товарищи, помогите с кодом пожалуйста.=( 1. Создать текстовый файл и сохранить в нём текст из...

Fstream
Можете пояснить что такое объект fstream

Fstream
Где нужно создавать базу(Расположение txt файла), чтобы visual studio видела её?

fstream
в каком пакете находится заголовок fstream ? у меня стоит g++-4.4 Добавлено через 4 минуты и...


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

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