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

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

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

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

04.04.2013, 17:30. Просмотров 245. Ответов 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++
Ошибка с перегрузкой операторов C++
C++ Создание класса с перегрузкой операторов конструктор и деструктор
C++ Проблемы с перегрузкой
C++ Создание шаблона с перегрузкой стандартных операторов
C++ Добавление и удаление объектов с перегрузкой операторов '+' и '-'
Создать файл для определения класса рациональных чисел с перегрузкой операторов C++
C++ Нахождение квадрата числа с перегрузкой операторов и функций
C++ Разница между перегрузкой операторов внешней или внутренней функцией
C++ Объясните работу кода с перегрузкой операторов
Потоки вводы и вывода C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
 Аватар для 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 минуту
спс работает=)
Yandex
Объявления
04.04.2013, 18:05     Проблемы с перегрузкой операторов файлового вводы/вывода
Ответ Создать тему
Опции темы

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