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

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

Войти
Регистрация
Восстановить пароль
 
Pelmen
Сообщений: n/a
#1

Подскажите как перегрузить ввод и вывод из файла для класса - C++

16.05.2012, 16:51. Просмотров 451. Ответов 0
Метки нет (Все метки)

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
// Перегрузка операций передачи в поток и извлечения из потока
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
using std::ostream;
using std::istream;
 
#include <iomanip>
 
using std::setw;
 
class PhoneNumber {
    friend ostream &operator<<( ostream&, const PhoneNumber & );
    friend istream &operator>>( istream&, PhoneNumber & );
public:
    char areaCode[ 4 ]; // 3 цифры кода области и null
    char exchange[ 4 ]; // 3 цифры кода подстанции и null
    char line[ 5 ];     // 4 цифры кода линии и null
private:
    /*Почему не работает когда данные закрыты???  */
    //char areaCode[ 4 ];   // 3 цифры кода области и null
    //char exchange[ 4 ];   // 3 цифры кода подстанции и null
    //char line[ 5 ];   // 4 цифры кода линии и null
};
 
/* Перегруженная операция передачи в поток (не может быть функцией-элементом, 
если мы хотим вызвать ее в форме cout << somePhoneNumber)*/
ostream &operator<<( ostream &output, const PhoneNumber &num )
{
    output << "(" << num.areaCode << ") "
           << num.exchange << "-" << num.line;
    return output;              // enables cout << a << b << c;
}
 
istream &operator>>( istream &input, PhoneNumber &num )
{
    input.ignore();                             // пропустить (
    input >> setw( 4 ) >> num.areaCode;         // ввести код области
    input.ignore( 2 );                          // пропустить ) и пробел
    input >> setw( 4 ) >> num.exchange;         // ввести код подстанции
    input.ignore();                             // пропустить дефис (-)
    input >> setw( 5 ) >> num.line;             // ввести код линии
    return input;                               // enables cout << a << b << c;
}
 
int main()
{
    PhoneNumber phone;  // создать объект номера
 
    cout << "Enter phone number in the form (123) 456-7890:\n";
    
    // cin >> phone выполняет функцию operator>>
    cin >> phone;
 
    // cout << phone выполняет функцию operator<<
    cout << "The phone number entered was: " << phone << endl;
 
    return 0;
}
Добавлено через 2 минуты
Здесь просто перегружены операции ввода и вывода для стандартных потоков, как подправить чтобы телефон считывался из файла out и выводился в файле in?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2012, 16:51     Подскажите как перегрузить ввод и вывод из файла для класса
Посмотрите здесь:

Как перегрузить оператор для своего класса? - C++
У меня есть класс, .h class Vertex { public: ~Vertex(); Vertex(); double GetX(); double GetY(); double GetZ(); void...

Как перегрузить операторы для шаблонного класса? - C++
Собственно задание: Нужно написать класс описывающий обычный вектор на плоскости. Для этого класса вам нужно реализовать сложение,...

Как правильно перегрузить оператор для шаблона класса - C++
Имеется такой шаблон: template&lt;int Low = 0, int High = 1000&gt; class Diapazon { }; Внутри него много всего, что уже работает,...

Как перегрузить оператор для класса. Хоть убейте, не могу - C++
Нужно поэлементно скопировать строки. Поэлементно, потому что задания другие, но мне нужно хотя бы это. Дальше уже легко. #include...

Как перегрузить операцию = для присваивания элементам структуры внутри класса значений? - C++
Помогите, если не затруднительно. Столкнулся с проблемой, когда пытался присвоить в конструкторе значения элементам структуры, которая...

Как перегрузить оператор "+" для шаблонного класса, инстанцированного разными типами? - C++
подскажите как перегрузить оператор &quot;+&quot; для шаблона , инстанцированных разными типами ...

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

Перегрузить операторы +=, -=, *=, /= для класса Rational - C++
дан класс Rational, который описывает рациональное число. В нем определены методы add, sub, mul и div, которые прибавляют к нему число,...

Перегрузить операторы для класса Ромб. - C++
1. Опишите класс &quot;Ромб&quot; class Rhombus// Класс Ромб { float x,y, d1, d2 ; public: void input_Rhombus(); };Данные класса:...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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