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

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

Восстановить пароль Регистрация
 
Pelmen
Сообщений: n/a
16.05.2012, 16:51     Подскажите как перегрузить ввод и вывод из файла для класса #1
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++ Перегрузить операцию сложения для класса дробей
C++ Перегрузить для класса оператор ==
Перегрузить для класса оператор == (много ошибок) C++
Как правильно перегрузить оператор для шаблона класса C++
Как перегрузить оператор для своего класса? C++
Перегрузить операторы для класса Ромб. C++
Как реализовать ввод адреса файла и соответственно вывод C++
Как перегрузить операторы вне класса? C++

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

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

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