С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 27.08.2016
Сообщений: 31

Перегрузка оператора >> << для файлов

28.03.2018, 23:35. Показов 632. Ответов 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
ifstream& operator>> (ifstream& in, Toy& ob)
{
    size_t len;
    in.read((char*)&len, sizeof(len));
    char *lol = new char[len];
    in.read(lol,len);
    ob.name_shop = lol;
    delete [] lol;
        system("pause");
    //in.read(const_cast<char*>(ob.name_shop.c_str()),len);
 
    
    
    in.read((char*)&len, sizeof(len));
    char *l = new char[len];
    in.read(l,len);
    ob.name_otdel = l;
    delete [] l;
    /*in.read(const_cast<char*>(ob.name_otdel.c_str()),len);*/
 
 
    in.read((char*)&len, sizeof(len)); 
    char *lo = new char[len];
    in.read(lo,len);
    ob.name_toy = lo;
    delete [] lo;
    /*in.read(const_cast<char*>(ob.name_toy.c_str()),len);*/
    
    in.read((char*)&len, sizeof(len)); 
    char *lok = new char[len];
    in.read(lok,len);
    ob.producer = lok;
    delete [] lok;
    //in.read(const_cast<char*>(ob.producer.c_str()),len);
    
    in.read((char*)&len, sizeof(len));
    char *loc = new char[len];
    in.read(loc,len);
    ob.country = loc;
    delete [] loc;
    //in.read(const_cast<char*>(ob.country.c_str()),len);
 
    in.read((char*)&ob.rating,sizeof(ob.rating));
    in.read((char*)&ob.adult,sizeof(ob.adult));
 
    in.read((char*)&len, sizeof(len)); 
    char *last = new char[len];
    in.read(last,len);
    ob.size_box = last;
    delete [] last;
    //in.read(const_cast<char*>(ob.size_box.c_str()),len);
return in;
}
C++
1
2
3
4
5
6
7
8
9
10
11
ifstream& operator>> (ifstream& in, Toy& ob)
{
    getline(in,ob.name_shop,'|'); 
    getline(in,ob.name_otdel,'|');
    getline(in,ob.name_toy,'|'); 
    getline(in,ob.producer,'|'); 
    getline(in,ob.country,'|');
    in>>ob.rating>>ob.adult ;
    getline(in,ob.size_box,'\n');
    return in;
}
как мне из объеденить в одной перегрузке? Ну и аналогично для записи есть два варианта
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2018, 23:35
Ответы с готовыми решениями:

Перегрузка оператора + для структуры
У нас есть две строки S1, S2 .После выполнения S3 = S1 + S2 : 1)в S3 должны быть символы входящие в S1 и в S2 одновременно. 2)Посчитать...

Перегрузка оператора = для указателей
Существует ли возможность предопределить оператор = для такого случая? Object* first = new Object(); Object second = first; //...

Перегрузка оператора для класса
Здравствуйте! Подскажите, пожалуйста, почему так не работает: class ClassA { public: ClassA() { m = 1; ...

5
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
28.03.2018, 23:48
Цитата Сообщение от timashenka Посмотреть сообщение
как мне из объеденить в одной перегрузке?
Зачем?
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
28.03.2018, 23:51
timashenka, вижу три варианта от простого к сложному.

1. Не используйте перегрузку, а вызывайте просто метод.
2. Перегрузите любую другую бинарную операцию, необязательно использовать >>
3. Создайте иерархию классов и перегрузите их.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.03.2018, 00:03
Да, и первый не изучал, второй криво будет работать.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
29.03.2018, 00:51
Цитата Сообщение от nd2 Посмотреть сообщение
второй криво будет работать
Почему?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.03.2018, 15:49
Цитата Сообщение от QuakerRUS Посмотреть сообщение
Почему?
А может и не криво (если все данные объекта в одной строке).

Добавлено через 14 часов 45 минут
Цитата Сообщение от nd2 Посмотреть сообщение
если все данные объекта в одной строке
Хотя, даже если, всё равно кривовато будет: лишний пробельный символ в строке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.03.2018, 15:49
Помогаю со студенческими работами здесь

Перегрузка оператора для stl
Читаю книгу Аммерааля по stl. разбираю следующий пример. Кто-нибудь может объяснить как работает return в данном примере. Раньше...

Перегрузка оператора + для шаблонов
Добрый день Имеется такой класс: #ifndef EXTENDED_H #define EXTENDED_H #include &lt;QString&gt; #include &lt;QDebug&gt;

Перегрузка оператора * и / для строки
Есть класс MyString нужно написать перезагрузку Операция *: должна вернуть новую строку, которая возникнет путем пересечения двух строк,...

Перегрузка оператора == для string
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;stdlib.h&gt; using namespace std; class...

Перегрузка оператора + для стека
Добрый день. Прошу помощи с перегрузкой этой операции. Цель: перегрузить + так,чтобы он складывал элементы двух стеков в третий.Вроде...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru