Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Hixon10
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 153
#1

Перегрузка операторов ввода и вывода из потоков - C++ Builder

17.10.2011, 12:07. Просмотров 1173. Ответов 0
Метки нет (Все метки)

Добрый день. Была лаба, которую я успешно сдал, но появился один момент, который я не понял. Задание - создать некое подобие класса fstream, перегрузив операторы ввода и вывода из потока. То есть, записывая такой код:
C++
1
2
3
class1 obj1;
obj1.open("text.txt");
obj1<<"test";
Строка ТЕСТ записывается в файл, с вторым оператором все аналогично.
Операторы я перегрузил, но, как мне кажется, они работают не полноценно. При использование такого кода:
C++
1
2
3
class1 obj1;
obj1.open("text.txt");
obj1<<"test"<<4;
Появляется ошибка. В принципе, это и логично, так как я неверно работаю с потоком (беру информацию из него, а возвращаю - void). Как работать с ними, потоками, верно?
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
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
 
 
class myFile {
 protected:
 static FILE *pFile;
 
 public:
 myFile () {}
};
 
 FILE *myFile::pFile;
 
class myFileR: virtual public myFile {
 public:
 myFileR (char *p): myFile () {
        pFile = fopen (p,"r");
 }
 myFileR (): myFile () {}
 void open (char *d) {
        pFile = fopen (d,"r");
 }
 void close (void) {
        fclose (pFile);
 }
int operator >>(int &y) {
        if (!pFile) exit(0);
        fscanf(pFile,"%d",&y);
 }
 
 void operator >>(char *y) {
        if (!pFile) exit(0);
        fgets (y, 100, pFile);
 }
};
 
 
class myFileW: virtual public myFile {
 public:
 myFileW (char *p): myFile () {
        pFile = fopen (p,"a");
 }
 myFileW (): myFile () {}
 void open (char *d) {
        if (pFile) fclose (pFile);
        pFile = fopen (d,"a");
 }
 void close (void) {
        fclose (pFile);
 }
 void operator <<(int y) {
        if (!pFile) exit(0);
        fprintf(pFile,"%d",y);
 }
 void operator <<(double y) {
        if (!pFile) exit(0);
        fprintf(pFile,"%g",y);
 }
 void operator <<(float y) {
        if (!pFile) exit(0);
        fprintf(pFile,"%f",y);
 }
 void operator <<(char y) {
        if (!pFile) exit(0);
        fprintf(pFile,"%c",y);
 }
 void operator <<(char *y) {
        if (!pFile) exit(0);
        fprintf(pFile,"%s",y);
 }
};
 
 
class myFileA: public myFileR, public myFileW {
 public:
 //myFileA
};
 
int main() {
  int m=5;
 char *p = new char [80];
 
 myFileW a;
 a.open("G:\\fewrfw.txt");
 a<<"erge";
 a<<5;
 a.close();
 
 
 myFileR b("G:\\fewrfw.txt");
 b>>p;
 cout<<p;
 getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2011, 12:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка операторов ввода и вывода из потоков (C++ Builder):

Перегрузка операторов для стека - C++ Builder
Ребят, привет есть оператор void TStek::summa(int &amp; sum) { sum=0; for(int i=0; i&lt;kol; i++) sum+=elem; } не...

Инкрементная и декрементная перегрузка операторов (классы) - C++ Builder
Помогите сделать перегрузку операторов для классов квадратного и биквадратного уравнений в C++ Builder 6 класс квадратного уравнения ...

Перегрузка операторов и указатель на объект типа класса - C++ Builder
Всем доброго времени суток. На досуге сидел реализовывал класс, который представлет из себя набор методов для работы с данными, заданными...

перегруженые операторы ввода-вывода - C++ Builder
очень прошу помочь с перегруженными операторами ввода-вывода ну например для списка с параметром Student есть простенькая структура: ...

Протекает наложенное событие ввода/вывода - C++ Builder
Ребята пытаюсь создать программно пользователя с правами администратора. Вот код #include &lt;lmaccess.h&gt; #include &lt;lm.h&gt; void...

Перехват ввода-вывода другой программы - C++ Builder
Имеется игровой сервер, запускается ввиде консоли. В частности, сервер игры CS Source. Нужно сделать так, чтобы я мог получать всю...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2011, 12:07
Привет! Вот еще темы с ответами:

Передача потока ввода/вывода в функцию - C++ Builder
Нужно перегрузить оператор ввода и вывода. С перегрузкой проблем не возникало до этого момента. Есть класс. #include &lt;iostream&gt; ...

Перегрузка операторов ввода и вывода - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class ComplexNumber { private: double a, b; ...

Перегрузка операторов ввода вывода - C++
в .h файле сделал объявление inline ostream&amp; operator &lt;&lt;(ostream&amp;, const Proc&amp;); inline istream&amp; operator &gt;&gt;(istream&amp;, Proc&amp;); в...

Перегрузка операторов ввода вывода - C++
ребята болит уже голова)) main.cpp #include &quot;myStr.h&quot; int main() { myStr myS(&quot;ok&quot;); cout&lt;&lt;myS&lt;&lt;endl;//надо чтоб...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.