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

Пример class+string+ofstream/ifstream - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
07.08.2013, 12:02     Пример class+string+ofstream/ifstream #1
Доброе время суток всем пресутствующим ) Если кому не сложно кинте пожалуйста сюда пример содержаший клас который содержит несколько полей string и перегруженый оператор

C++
1
2
ofstream& operator<<(ofstream&fs,const Person& a)
ifstream& operator>>(ifstream&fs,Person&a)
Думаю у когонибудь есть заранее примного благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2013, 12:02     Пример class+string+ofstream/ifstream
Посмотрите здесь:

C++ ifstream/ofstream/fstream
Функции ifstream , ofstream. Исправить C++
Работаем с потоками на C++ ofstream и ifstream C++
C++ C++ файлы ifstream/ofstream
class/string/ifstream/ofstream C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.08.2013, 12:07     Пример class+string+ofstream/ifstream #2
getline вам в помощь.
строки разделяем каким-то разделителем.
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
07.08.2013, 12:17  [ТС]     Пример class+string+ofstream/ifstream #3
Цитата Сообщение от Jupiter Посмотреть сообщение
getline вам в помощь.
строки разделяем каким-то разделителем.
честно говоря не совсем уверен как связать это все в кучу с записью чтению в/из файла тоесть идея в том чтобы влепить туда разделители ?
Честно говоря сколько я делал все это я туда лепил количевство символов для считываяния а теперь вот разбираюсь со string и выходит что тут принцип предыдущего опыта не работает и нуна юзать разделители сомнительного происхождения ?

Добавлено через 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
#include "date.h"
#include <string>
#include <fstream>
using namespace std;
#pragma once
class Person
{
    string surname;
    string name;
    string patronymic;
    string address;
    string phone;
    string email;
    string ICQ;
    date birthday;
public:
    Person(){}
    Person(string aSurname, string aName, string aPatronymic,string aAddress, string aPhone, string aemail, string aICQ,int d,int m,int y)
    {
        surname=aSurname;
        name=aName;
        patronymic=aPatronymic;
        address=aAddress;
        phone=aPhone;
        email=aemail;ICQ=aICQ;
        birthday.set_day(d);
        birthday.set_mounth(m);
        birthday.set_year(y);
    }
    Person(const Person & av)
    {
        surname=av.surname;
        name=av.name;
        patronymic=av.patronymic;
        address=av.address;
        phone=av.phone;
        email=av.email;
        ICQ=av.ICQ;
        birthday.set_day(av.birthday.get_day());
        birthday.set_mounth(av.birthday.get_mounth());
        birthday.set_year(av.birthday.get_year());
    }
    ~Person(){}
 
    Person operator=(const Person&av)
    {
        surname=av.surname;
        name=av.name;
        patronymic=av.patronymic;
        address=av.address;
        phone=av.phone;
        email=av.email;
        ICQ=av.ICQ;
        birthday.set_day(av.birthday.get_day());
        birthday.set_mounth(av.birthday.get_mounth());
        birthday.set_year(av.birthday.get_year());
        return *this;
    }
    void show()
    {
        cout<<"personal Information::::::::::"<<endl;
        cout<< "Surname: "<< surname << endl;
        cout << "Name: " << name << endl;
        cout << "Patronymic: " << patronymic << endl;
 
        cout<< "Address: " << address <<endl;
        cout<< "Phone: " << phone << endl;
        cout<< "e-mail: " << email <<endl;
        cout<< "ICQ: " << ICQ << endl;
        cout<<"birthday=";
        birthday.show();
        cout<<endl;
    }
    friend ostream& operator<<(ostream& os,const Person& a);
    friend istream& operator>>(istream& is, Person& a);
    friend ofstream& operator<<(ofstream&fs,const Person&a);
    friend ifstream& operator>>(ifstream&fs,Person&a);
 
 
    void set_surname(string aSurname)
    {
        surname=aSurname;
    }
    void set_name(string aName)
    {
        name=aName;
    }
    void set_patronymic(string aPatronymic)
    {
        patronymic=aPatronymic;
    }
    void set_address(string aAddress)
    {
        address=aAddress;
    }
    void set_phone(string aPhone)
    {
        phone=aPhone;
    }
    void set_email(string aEmail)
    {
        email=aEmail;
    }
    void set_ICQ(string aICQ)
    {
        ICQ=aICQ;
    }
    void set_birhday(int d,int m,int y)
    {
        birthday.set_day(d);
        birthday.set_mounth(m);
        birthday.set_year(y);
    }
 
    string get_surname()const
    {
        return surname;
    }
    string get_name()const
    {
        return name;
    }
    string get_patronymic()const
    {
        return patronymic;
    }
    string get_address()const
    {
        return address;
    }
    string get_phone()const
    {
        return phone;
    }
    string get_email()const
    {
        return email;
    }
    string get_ICQ()const
    {
        return ICQ;
    }
    date get_birthday() const
    {
        return birthday;
    }
};
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
#pragma once
#include <iostream>
#include <fstream>
using namespace std;
class date
{
 
    int day;
    int mounth;
    int year;
public:
    date();
    date(int d,int m,int y);
    date(const date&a);
    
    void set_day(int d);
    void set_mounth(int m);
    void set_year(int y);
 
    int get_day()const;
    int get_mounth()const;
    int get_year()const;
 
    void show();
    friend ostream& operator<<(ostream& os,const date& a);
    friend istream& operator>>(istream& is, date& a);
    friend ofstream& operator<<(ofstream &fs,const date &a);
    friend ifstream& operator>>(ifstream &fs,date &a);
};
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
#include <iostream>
#include "date.h"
using namespace std;
    date::date()
    {
        day=0;
        mounth=0;
        year=0;
    }
    date::date(int d,int m,int y)
    {
        day=d;
        mounth=m;
        year=y;
    }
    date::date(const date&a)
    {
        day=a.get_day();
        mounth=a.get_mounth();
        year=a.get_year();
    }
    
    void date::set_day(int d)
    {
        day=d;
    }
    void date::set_mounth(int m)
    {
        mounth=m;
    }
    void date::set_year(int y)
    {
        year=y;
    }
 
    int date::get_day()const
    {
        return day;
    }
    int date::get_mounth()const
    {
        return mounth;
    }
    int date::get_year()const
    {
        return year;
    }
    void date::show()
    {
        cout<<day<<","<<mounth<<","<<year<<endl;
    }
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
#include <iostream>
#include "date.h"
#include "Person.h"
#include <fstream>
using namespace std;
ostream& operator<<(ostream& os,const Person& a)
{
    os<<"personal Information::::::::::"<<endl;
    os<< "Surname: "<< a.surname << endl;
    os << "Name: " << a.name << endl;
    os << "Patronymic: " << a.patronymic << endl;
 
    os << "Address: " << a.address <<endl;
    os<< "Phone: " << a.phone << endl;
    os<< "e-mail: " << a.email <<endl;
    os<< "ICQ: " << a.ICQ << endl;
    os<<"birthday=";
    os<<a.birthday;
    cout<<endl;
    return os;
}
istream& operator>>(istream&is,Person&a)
{
    cout<<"enter your personal data::"<<endl; 
    cout<<"enter surname=";
    cin>>a.surname;
 
    cout<<"enter name=";
    cin>>a.name;
 
    cout<<"enter patronymic=";
    cin>>a.patronymic;
 
    cout<<"enter address=";
    cin>>a.address;
 
    cout<<"enter phone=";
    cin>>a.phone;
 
    cout<<"enter email=";
    cin>>a.email;
 
    cout<<"enter ICQ=";
    cin>>a.ICQ;
    cout<<endl;
 
    cout<<"enter data of your birthday"<<endl;
    is>>a.birthday;
 
    return is;
}
ofstream& operator<<(ofstream&fs,const Person& a)
ifstream& operator>>(ifstream&fs,Person&a)
 
 
ostream& operator<<(ostream& os,const date& a)
{
    os<<a.day<<",";
    os<<a.mounth<<",";
    os<<a.year<<endl;
    return os;
}
istream& operator>>(istream&is,date&a)
{
    int d=0;
    cout<<"enter day=";
    is>>d;
    a.day=d;
    cout<<"enter mounth=";
    is>>d;
    a.mounth=d;
    cout<<"enter year=";
    is>>d;
    a.year=d;
    return is;
}
ifstream& operator>>(ifstream &fs,date &a)
{
    int sz=sizeof(int);
    fs.read((char*)&a.day,sz);
    fs.read((char*)&a.mounth,sz);
    fs.read((char*)&a.year,sz);
    return fs;
}
ofstream& operator<<(ofstream &fs,const date &a)
{
    int sz=sizeof(int);
    fs.write((char*)&a.day,sz);
    fs.write((char*)&a.mounth,sz);
    fs.write((char*)&a.year,sz);
    return fs;
}
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.08.2013, 12:19     Пример class+string+ofstream/ifstream #4
Цитата Сообщение от alex1392 Посмотреть сообщение
идея в том чтобы влепить туда разделители ?
ну надо же знать где заканчивается одна строка и начинается другая

Цитата Сообщение от alex1392 Посмотреть сообщение
Честно говоря сколько я делал все это я туда лепил количевство символов для считываяния а теперь вот разбираюсь со string и выходит что тут принцип предыдущего опыта не работает
можно и через количество символов
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
07.08.2013, 13:07  [ТС]     Пример class+string+ofstream/ifstream #5
Цитата Сообщение от Jupiter Посмотреть сообщение
ну надо же знать где заканчивается одна строка и начинается другая


можно и через количество символов
Окай буду дальши эксперементировать )

Добавлено через 44 минуты
Ребят брости ктонить пример или ссылку на нормальный пример ибо сам пишу но оно работает не коректно нашол способ сделать нормальное считывание записи string но из-за него потом возникает проблемы в дальнейшем решить проблему могу если заменить интовые переменные стрингом но этожи полный бред ) кому не сложно киньте нормальный пример
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.08.2013, 13:08     Пример class+string+ofstream/ifstream #6
нет, показывай что пишешь
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
07.08.2013, 13:17  [ТС]     Пример class+string+ofstream/ifstream #7
Цитата Сообщение от Jupiter Посмотреть сообщение
нет, показывай что пишешь
сверху уже все лежит из того что написано кроме ifstream ofstream
только нуна туда еше getline впихнуть )) я со стринг токо начал разбиратьсо )
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.08.2013, 13:20     Пример class+string+ofstream/ifstream #8
Цитата Сообщение от alex1392 Посмотреть сообщение
нашол способ сделать нормальное считывание записи string но из-за него потом возникает проблемы в дальнейшем решить проблему могу если заменить интовые переменные стрингом но этожи полный бред
вот это показывай

Цитата Сообщение от alex1392 Посмотреть сообщение
сверху уже все лежит
там лежит для класса date, а вопрос был по классу Person, хватит уже отмазываться
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2013, 13:36     Пример class+string+ofstream/ifstream
Еще ссылки по теме:

ifstream ofstream C++
Неправильно выполнение ifstream, ofstream C++
Перегрузка ifstream и ofstream? C++

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

Или воспользуйтесь поиском по форуму:
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
07.08.2013, 13:36  [ТС]     Пример class+string+ofstream/ifstream #9
Это начальный вариант
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
ofstream& operator<<(ofstream&fs,const Person& a)
{
    //int sz;
 
//  sz=a.surname.size();
//  fs.write((char*)&sz,sizeof(int));
    fs<<a.surname<<" ";
 
    //sz=strlen(a.name);
    //fs.write((char*)&sz,sizeof(int));
    fs<<a.name<<" ";
 
    //sz=strlen(a.patronymic);
    //fs.write((char*)&sz,sizeof(int));
    fs<<a.patronymic<<" ";
 
//  sz=strlen(a.address);
    //fs.write((char*)&sz,sizeof(int));
    fs<<a.address<<" ";
 
    //sz=strlen(a.phone);
    //fs.write((char*)&sz,sizeof(int));
    fs<<a.phone<<" ";
 
    //sz=strlen(a.email);
    //fs.write((char*)&sz,sizeof(int));
    fs<<a.email<<" ";
 
    //sz=a.ICQ.size();
    //fs.write((char*)&sz,sizeof(int));
    fs<<a.ICQ<<" ";
 
    fs<<a.birthday;
    return fs;
}
ifstream& operator>>(ifstream&fs,Person&a)
{
 
 
    //fs.read((char*)&sz, sizeof(int));
    if (fs.eof()) return fs;
    fs>>a.surname;
 
    //fs.read((char*)&sz, sizeof(int));
    fs>>a.name;
 
    //fs.read((char*)&sz, sizeof(int));
    fs>>a.patronymic;
 
    //fs.read((char*)&sz, sizeof(int));
    fs>>a.address;
 
    //fs.read((char*)&sz, sizeof(int));
    fs>>a.phone;
 
    //fs.read((char*)&sz, sizeof(int));
    fs>>a.email;
 
    //fs.read((char*)&sz, sizeof(int));
    fs>>a.ICQ;
    fs>>a.birthday;
    return fs;
}
При такой записи искажаются данные даты
Yandex
Объявления
07.08.2013, 13:36     Пример class+string+ofstream/ifstream
Ответ Создать тему
Опции темы

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