Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vlad1994
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 11
#1

Проблемы с перегрузкой операторов файлового вводы/вывода - C++

04.04.2013, 17:30. Просмотров 268. Ответов 4
Метки нет (Все метки)

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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
 
class Array{
    int *Arr, Size;
public:
    Array(int Size);
    ~Array();
 
    Array &operator = (Array &right);
    Array operator >> (Array &obj1);
    Array operator << (Array obj1);
 
    friend ostream &operator << (ostream &stream, Array obj2);
    friend istream &operator >> (istream &stream, Array &obj2);
};
 
Array::Array(int Size){
    this->Size=Size;
    Arr=new int [Size];
    for(int i=0; i < Size; i++)
        Arr[i]=0;
}
 
Array::~Array(){
 
    delete []Arr;
 
}
 
 Array &Array::operator = (Array &right){
 
    Arr=new int [Size=right.Size];
    for(int i=0; i < Size; i++)
        Arr[i]=right.Arr[i];
 
    return *this;
}
 
Array Array::operator>>( Array &obj1){
 
    for(int i=0; i < obj1.Size; i++)
        cin>>obj1.Arr[i];
 
    return *this;
}
 
Array Array::operator<<( Array obj1){
 
    for(int i=0; i < obj1.Size; i++)
        cout<<obj1.Arr[i];
 
    return *this;
}
 
ostream &operator << (ostream &stream, Array obj2){
 
    for(int i=0; i < obj2.Size; i++)
    stream<<obj2.Arr[i];
 
    return stream;
}
 
istream &operator >> (istream &stream, Array &obj2){
 
    for(int i=0; i < obj2.Size; i++)
    stream>>obj2.Arr[i];
 
    return stream;
}
 
int main (){
    setlocale (LC_ALL,"Russian");
 
    int x;
 
    cout<<"Введите размер массива: ";
    cin>>x;
 
    Array obj1(x), obj2(x);
 
    cout<<"Введите массив: "<<endl;
    cin>>obj1;
 
    obj2=obj1;
 
    cout<<"Массив: "<<endl; 
    cout<<obj2;
    cout<<endl;
 
 
    ofstream fout;
    fout.open("Test.txt");
 
    if(!fout.is_open()){
 
        cout<<"Фаил открыть невозможно!"<<endl;
 
        return 1;
    }
 
    fout<<obj2;
 
    fout.close();
 
    ifstream fin;
    fin.open("Test.txt");
 
    if(!fin.is_open()){
 
        cout<<"Фаил открыть невозможно!"<<endl;
 
        return 1;
    }
 
    fin>>obj2;
    cout<<"Содержимое файла:"<<endl;
    cout<<obj2<<endl;
 
    fin.close();
 
    system("pause");
    return 0;
}
помогите не могу найти ошибку скорее всего оператор << не правильно работает
Миниатюры
Проблемы с перегрузкой операторов файлового вводы/вывода   Проблемы с перегрузкой операторов файлового вводы/вывода   Проблемы с перегрузкой операторов файлового вводы/вывода  

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2013, 17:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблемы с перегрузкой операторов файлового вводы/вывода (C++):

Потоки вводы и вывода - C++
Не обрезает пробелы string str; cin.setf(ios::skipws); cin &gt;&gt; str; cout &lt;&lt; str; И можно как-нибудь с...

Ошибка с перегрузкой операторов - C++
копилятор видимо тупит или я туплю или автор книги class countt{ public: int getvar()const{return itsvar;} void setvar(int...

Создание шаблона с перегрузкой стандартных операторов - C++
Здравствуйте уважаемые! Уже несколько часов подряд бьюсь над задачей вроде бы очень простой, но видимо что-то упускаю. Задача...

Проблема с абстрактными классами и перегрузкой операторов - C++
добрый день. в общем ситуация такая: есть несколько классов, наследуемых от абстрактного класса. Нужно реализовать чтобы можно было...

Добавление и удаление объектов с перегрузкой операторов '+' и '-' - C++
У нас есть массив указателей на объекты, и нужно осуществить добавление и удаление объектов с помощью перегрузки оперторов '+' и '-'. ...

Объясните работу кода с перегрузкой операторов - C++
Здравствуйте Код: #include &lt;iostream&gt; using namespace std; class A { public:

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.04.2013, 17:49 #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
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
 
class Array{
    int *Arr, Size;
public:
    Array(int Size);
    ~Array();
 
    Array &operator = (Array &right);
    //Array operator >> (Array &obj1);
    // Array operator << (Array obj1);
 
    friend ostream& operator << (ostream &stream, const Array &obj2);
    friend istream& operator >> (istream &stream, Array &obj2);
};
 
Array::Array(int Size){
    this->Size=Size;
    Arr=new int [Size];
    for(int i=0; i < Size; i++)
        Arr[i]=0;
}
 
Array::~Array(){
 
    delete []Arr;
 
}
 
 Array &Array::operator = (Array &right){
 
    Arr=new int [Size=right.Size];
    for(int i=0; i < Size; i++)
        Arr[i]=right.Arr[i];
 
    return *this;
}
 
/*
Array Array::operator>>( Array &obj1){
 
    for(int i=0; i < obj1.Size; i++)
        cin>>obj1.Arr[i];
 
    return *this;
} 
 
Array Array::operator<<( const Array& obj1){
 
    for(int i=0; i < obj1.Size; i++)
        cout<<obj1.Arr[i];
 
    return *this;
}
*/
 
ostream &operator << (ostream &stream, const Array& obj2){
 
    for(int i=0; i < obj2.Size; i++)
    stream<<obj2.Arr[i];
 
    return stream;
}
 
istream &operator >> (istream &stream, Array& obj2){
 
    for(int i=0; i < obj2.Size; i++)
    stream>>obj2.Arr[i];
 
    return stream;
}
 
int main (){
    setlocale (LC_ALL,"Russian");
 
    int x;
 
    cout<<"Введите размер массива: ";
    cin>>x;
 
    Array obj1(x), obj2(x);
 
    cout<<"Введите массив: "<<endl;
    cin>>obj1;
 
    obj2=obj1;
 
    cout<<"Массив: "<<endl; 
    cout<<obj2;
    cout<<endl;
 
 /*
    ofstream fout;
    fout.open("Test.txt");
 
    if(!fout.is_open()){
 
        cout<<"Фаил открыть невозможно!"<<endl;
 
        return 1;
    }
 
    fout<<obj2;
 
    fout.close(); 
 
    ifstream fin;
    fin.open("Test.txt");
 
    if(!fin.is_open()){
 
        cout<<"Фаил открыть невозможно!"<<endl;
 
        return 1;
    }
 
    fin>>obj2;
    cout<<"Содержимое файла:"<<endl;
    cout<<obj2<<endl;
 
    fin.close(); */
 
    system("pause");
    return 0;
}
Vlad1994
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 11
04.04.2013, 17:59  [ТС] #3
вроде как работает но только выводит фигню, не то что в файле, в файле 123 а выводит 12323 =(

а еще выходные данные показывают:

"LabaSugrob.exe" (Win32). Загружено "E:\студия\LabaSugrob\Debug\LabaSugrob.exe". Символы загружены.
"LabaSugrob.exe" (Win32). Загружено "C:\Windows\SysWOW64\ntdll.dll". Невозможно найти или открыть файл PDB.
"LabaSugrob.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel32.dll". Невозможно найти или открыть файл PDB.
"LabaSugrob.exe" (Win32). Загружено "C:\Windows\SysWOW64\KernelBase.dll". Невозможно найти или открыть файл PDB.
"LabaSugrob.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcp110d.dll". Символы загружены.
"LabaSugrob.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcr110d.dll". Символы загружены.
Программа "[5016] LabaSugrob.exe" завершилась с кодом -1073741510 (0xc000013a).

что это значит?
Миниатюры
Проблемы с перегрузкой операторов файлового вводы/вывода   Проблемы с перегрузкой операторов файлового вводы/вывода  
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
04.04.2013, 18:02 #4
Цитата Сообщение от Vlad1994 Посмотреть сообщение
вроде как работает но только выводит фигню, не то что в файле, в файле 123 а выводит 12323 =(
Ты пишешь числа в файл вместе, вот программа и считает их как одно число 123. Попробуй разделять числа пробелами например.
Vlad1994
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 11
04.04.2013, 18:05  [ТС] #5
понял, щас попробую

Добавлено через 1 минуту
спс работает=)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 18:05
Привет! Вот еще темы с ответами:

Проблема с перегрузкой операторов '-' >> << и с конструктором без параметров - C++
Помогите пожалуйста, проблема с перегрузкой операторов '-' &gt;&gt; &lt;&lt;, возможно еще с конструктором без параметров наверно проблема #pragma...

Нахождение квадрата числа с перегрузкой операторов и функций - C++
Нахождения квадрата числа. Программа на перегрузки операций , функций.

Создание класса с перегрузкой операторов конструктор и деструктор - C++
Создать класс времени (Time) содержащий закрытую переменную-член хранящую целое значение времени интервала в секундах. Интерфейс класса...

Разница между перегрузкой операторов внешней или внутренней функцией - C++
Перегружаю operator* (умножаю экземпляры своего класса между собой). Как лучше перегрузить: MyClass operator*(MyClass a, MyClass b){}или ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.04.2013, 18:05
Ответ Создать тему
Опции темы

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