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

Перегруженный оператор ввода - C++

Восстановить пароль Регистрация
 
Костя Хута
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 22
02.11.2012, 16:24     Перегруженный оператор ввода #1
Всем привет, как правильно создать перегруженный оператор ввода для инициализации данных об обьекте
к примеру
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Planet{
public: string name;
protected: double diameter;
private: int sputniks, number, distance;
public:
    Planet();
    Planet(string n,double dia,int sput,int numb,int dist);
 
};
 
 
Planet::Planet(string n,double dia,int sput,int numb,int dist)
         {
            name=n;
            diameter=dia;
            sputniks=sput;
            number=numb;
            distance=dist;
         }
а в мейне с помощью перегруженных >> нужно задать данные обьекту
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2012, 16:24     Перегруженный оператор ввода
Посмотрите здесь:

C++ Не вызывается перегруженный оператор
C++ Функции и перегруженный оператор
C++ перегруженный оператор <<
C++ Перегруженный оператор вывода
Перегруженный оператор присваивания C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
02.11.2012, 16:39     Перегруженный оператор ввода #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
#include <iostream>
#include <string>
using namespace std;
 
 
class Planet{
public: string name;
protected: double diameter;
private: int sputniks, number, distance;
public:
    Planet() { sputniks = 0; number = 0; distance = 0; }
    Planet(string n,double dia,int sput,int numb,int dist); 
    friend istream& operator >> (istream&, Planet&);
 
};
 
istream& operator >> (istream& in, Planet& ob) 
{  
    in >> ob.sputniks >> ob.distance >> ob.distance; 
    return in;
 
}
 
Planet::Planet(string n,double dia,int sput,int numb,int dist)
         {
            name=n;
            diameter=dia;
            sputniks=sput;
            number=numb;
            distance=dist;
         }
 
int main() 
{ 
    Planet pl; 
    cin >> pl; 
}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
02.11.2012, 17:03     Перегруженный оператор ввода #3
с исключениями
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
#include <iostream>
#include <stdexcept>
#include <fstream>
#include <string>
using namespace std;
 
class Planet
{
public:
    Planet(){};
    Planet(string const&, double, int, int, int);
    friend std::istream& operator>>(std::istream&, Planet&);
    string name;
protected:
    double diameter;
private:
    int sputnics, number, distance;
};
 
Planet::Planet(string const& n, double dia, int sput, int numb, int dist)
{
    name=n;
    diameter=dia;
    sputnics=sput;
    number=numb;
    distance=dist;
}
 
std::istream& operator>>(std::istream& ist, Planet& p)
{
    Planet tmp;
    ist >> tmp.name >> tmp.diameter >> tmp.sputnics >> tmp.number >> tmp.distance;
    if(!ist)
        throw std::runtime_error("operator>> failed");
    else
        p = tmp;
    return ist;
}
 
int main()
{
    std::ifstream ifs("in.txt");
    if(ifs.is_open())
    {
        Planet p, p1;
        try
        {
            ifs >> p >> p1;
        }
        catch(std::exception const& e)
        {
            std::cerr << "Exception: " << e.what() << std::endl;
        }
        std::cout << p.name << ' ' << p1.name << std::endl;
        ifs.close();
    }
    else
        std::cerr << "Unable to open file" << std::endl;
    return 0;
}
Костя Хута
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 22
02.11.2012, 17:08  [ТС]     Перегруженный оператор ввода #4
Большое спасибо,тема закрыта
Yandex
Объявления
02.11.2012, 17:08     Перегруженный оператор ввода
Ответ Создать тему
Опции темы

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