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

Класс "Product", осуществить удаление и редактирование строк в файле

31.05.2020, 00:30. Показов 3705. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна ваша помощь, есть класс данные которого записываются в файл, нужно сделать функцию с помощью которой можно будет редактировать данные файла(например хочу отредактировать количество товара), и функцию удаления определенной записи в файле. Как это осуществить, и как это должно выглядеть?
Код:
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <locale>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <cstring>
#include <iomanip>
 
 
using namespace std;
class Product               
{
   
public:
 
    string Product_Code, Product_amount;
    string Title, Production, ProductType, Unit;
    string Purch_price, Price;
public:
    void setProduct(string TProduct_Code, string TProduct_amount, string Ttitle, string tProduction, string tProductType, string tUnit, string TPurch_Price, string TPrice)
    {
        Product_Code = TProduct_Code;
        Product_amount = TProduct_amount;
        Title = Ttitle;
        Production = tProduction;
        ProductType = tProductType;
        Unit = tUnit;
        Purch_price = TPurch_Price;
        Price = TPrice;
 
    }
    void getProduct()
    {
        cout << "\nКод товару: " << Product_Code << "\nК-сть товару: " << Product_amount << "\nНазва товару: " << Title << "\nКраїна виробництва: " << Production << "\nТип товару: " << ProductType << "\nОдиниця вимiру: " << Unit << "\nЗакупiвельна цiна: " << Purch_price << "\nЦiна продажу: " << Price << endl;
    }
    friend std::istream& operator >> (std::istream& in, Product& obj)
    {
        in >> obj.Product_Code >> obj.Product_amount >> obj.Title
            >> obj.Production >> obj.ProductType >> obj.Unit
            >> obj.Purch_price >> obj.Price;
        return in;
    }
    friend std::ostream& operator <<(std::ostream& out, const Product& obj)
    {
        return out
            << "Код товару: " << obj.Product_Code
            << "\nК-сть товару: " << obj.Product_amount
            << "\nНазва товару: " << obj.Title
            << "\nКраїна виробництва " << obj.Production
            << "\nТип товару " << obj.ProductType
            << "\nОдиниця виміру " << obj.Unit
            << "\nЗакупівельна ціна " << obj.Purch_price
            << "\nЦіна продажу " << obj.Price;
    }
};     
void f3()
{
    std::vector<Product> products;
 
    string Product_Code, Product_amount;
    string Title, Production, ProductType, Unit;
    string Purch_price, Price;
    int n = 1;
    while (n == 1)
    {
        cout << "\nВведiть данi про товар:\n";
        cout << "\nКод товару: ";     cin >> Product_Code;
        cout << "\nК-сть товару:  ";    cin >> Product_amount;
        cout << "\nНазва товару:  ";  cin >> Title;
        cout << "\nКраїна виробництва:  ";  cin >> Production;
        cout << "\nТип товару:  ";  cin >> ProductType;
        cout << "\nОдиниця вимiру:  ";  cin >> Unit;
        cout << "\nЗакупiвельна цiна:  ";  cin >> Purch_price;
        cout << "\nЦiна продажу:  ";  cin >> Price;
        Product objProduct;
        objProduct.setProduct(Product_Code, Product_amount, Title, Production, ProductType, Unit, Purch_price, Price);
        products.push_back(objProduct);
        cout << "\nДодати ще один товар? (1 - Так)\n "; cin >> n;
    }
 
    for (auto& product : products)
        product.getProduct();
    ofstream fout("Products.txt", std::ios_base::out | std::ios_base::app);
    for (auto& product : products)
        fout << product << std::endl;
} 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "ukr");
    while (1)
    {
        cout << "Виберiть роздiл" << endl;
        cout << "0 - exit" << endl;
        cout << "3 - Роздiл 'Товар' " << endl;
        int mode = 0;
        cin >> mode;
 
        if (mode == 0) {
            break;
        }
        else if (mode == 3) {
            f3();
        }
        else {
            cout << "Такого номера немає у списку." << endl;
        }
 
    }
    system("pause");
    return 0;
};
Добавлено через 29 минут
Объясните кто нибудь.

Добавлено через 13 секунд
Пожалуйста

Добавлено через 5 часов 25 минут
Help
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2020, 00:30
Ответы с готовыми решениями:

Работа с файлами. Удаление и редактирование строк в бинарном файле
Имеется вот такое задание: Дан файл, содержащий сведения о вступительных экзаменах в ВУЗ по результатам ЕГЭ по математике, русскому и...

Класс "Product", осуществить поиск по критерию минимальной цены
Всем привет, есть код, есть класс &quot;Product&quot;, нужно сделать так чтобы осуществлялся поиск по критерию минимальной цены, есть похожий код по...

Объект класс Product присвоить к массиву объектов Product класса Storage
Здравствуйте! Имеется конструктор, создающий в нужный момент объект из 5 &quot;пунктов&quot;. Мне надо этот объект присвоить в массив таких...

7
4 / 3 / 1
Регистрация: 07.11.2019
Сообщений: 330
31.05.2020, 19:41  [ТС]


Добавлено через 5 часов 5 минут
Есть такой код, помогите его сделать под мой класс, пожалуйста
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main() {
    char *file_name = "file.txt";
    std::string buf, rem;
    std::vector<std::string> vec;
 
    std::cout << "String to remove: ";
    std::getline(std::cin, rem);
 
    std::ifstream ifs(file_name);
    if (!ifs.is_open()) {
        std::cerr << "Can't open file for read!" << std::endl;
        return 1;
    }
    while (std::getline(ifs, buf))
        if (buf != rem)
            vec.push_back(buf);
    ifs.close();
 
    std::ofstream ofs(file_name);
    if (!ofs.is_open()) {
        std::cerr << "Can't open file for write!" << std::endl;
        return 1;
    }
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(ofs, "\n"));
    ofs.close();
 
    std::cout << "Ales apgemaht!" << std::endl;
    return 0;
}
Добавлено через 5 минут


Добавлено через 22 минуты
HELP

Добавлено через 18 минут


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

Добавлено через 23 минуты


Добавлено через 1 час 6 минут
Как правильно надо сделать с помощью этого кода?

Добавлено через 1 час 18 минут
???

Добавлено через 1 час 19 минут
HELP
0
4 / 3 / 1
Регистрация: 07.11.2019
Сообщений: 330
01.06.2020, 09:52  [ТС]
Help
0
4 / 3 / 1
Регистрация: 07.11.2019
Сообщений: 330
01.06.2020, 16:09  [ТС]
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
    int main() {
        char *file_name = "Products.txt";
        std::string buf, rem;
        std::vector<std::string> vec;
 
        std::cout << "String to remove: ";
        std::getline(std::cin, rem);
 
        std::ifstream ifs(file_name);
        if (!ifs.is_open()) {
            std::cerr << "Can't open file for read!" << std::endl;
            return 1;
        }
        while (std::getline(ifs, buf))
            if (buf != rem)
                vec.push_back(buf);
        ifs.close();
 
        std::ofstream ofs(file_name);
        if (!ofs.is_open()) {
            std::cerr << "Can't open file for write!" << std::endl;
            return 1;
        }
        std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(ofs, "\n"));
        ofs.close();
 
        std::cout << "Ales apgemaht!" << std::endl;
        return 0;
    }
Сделала вот так, но ошибка
Ошибка (активно) E0144 значение типа "const char *" нельзя использовать для инициализации сущности типа "char *"
Заменила на string, работает но строки не удаляет
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
01.06.2020, 16:12
Лучший ответ Сообщение было отмечено AlinkaP как решение

Решение

Цитата Сообщение от AlinkaP Посмотреть сообщение
char *file_name = "Products.txt";
ну вообще-то const char*file_name = "Products.txt"; иначе можно решить, что вы и правда на строку, а не на константу указываете

Добавлено через 21 секунду
Цитата Сообщение от AlinkaP Посмотреть сообщение
char *file_name = "Products.txt";
ну вообще-то const char*file_name = "Products.txt"; иначе можно решить, что вы и правда на строку, а не на константу указываете
1
4 / 3 / 1
Регистрация: 07.11.2019
Сообщений: 330
01.06.2020, 17:20  [ТС]
Kuzia domovenok, А оно действительно работает))

Добавлено через 5 минут
Kuzia domovenok, Kuzia domovenok, А как осуществить эту функцию в void?

Добавлено через 1 час 0 минут
Сделала в void но пишет, 3 ошибки в return 1; return 1; return 0; С
Ошибка (активно) E0120 тип возвращаемого значения не соответствует типу функции
Ошибка (активно) E0120 тип возвращаемого значения не соответствует типу функции
Ошибка (активно) E0120 тип возвращаемого значения не соответствует типу функции

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
void f4()
{
    const char* file_name = "Products.txt";
    std::string buf, rem;
    std::vector<std::string> vec;
 
    std::cout << "String to remove: ";
    std::getline(std::cin, rem);
 
    std::ifstream ifs(file_name);
    if (!ifs.is_open()) {
        std::cerr << "Can't open file for read!" << std::endl;
        return 1;
    }
    while (std::getline(ifs, buf))
        if (buf != rem)
            vec.push_back(buf);
    ifs.close();
 
    std::ofstream ofs(file_name);
    if (!ofs.is_open()) {
        std::cerr << "Can't open file for write!" << std::endl;
        return 1;
    }
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(ofs, "\n"));
    ofs.close();
 
    std::cout << "Ales apgemaht!" << std::endl;
    return 0;
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
01.06.2020, 17:44
Лучший ответ Сообщение было отмечено AlinkaP как решение

Решение

заменить return 1, return 0 на return;
0
4 / 3 / 1
Регистрация: 07.11.2019
Сообщений: 330
01.06.2020, 18:07  [ТС]
Kuzia domovenok, Большое спасибо

Добавлено через 17 минут
Kuzia domovenok, Ну оно теперь просто пропускает часть кода, и не дает ввести номер строки которую надо удалить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2020, 18:07
Помогаю со студенческими работами здесь

Объект класс Product присвоить к массиву объектов Product класса Storage
У меня есть конструкто, создающий

Удаление и редактирование записей в файле
Нужно реализовать процедуры удаления и редактирования записей в файле. program a; uses crt; type Struct=record ...

Удаление и редактирование объектов в текстовом файле
Доброго времени суток! Возможно ли удаление и редактирование объектов, сериализованных в текстовый файл, в приложении ASP.NET,...

Удаление, редактирование и добавление информации в файле
Всем привет, такое дело что я не понимаю как можно изменить, удалить, добавить информацию в файле (допустим у меня есть 5 строк в файле,...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru