Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
1

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

07.08.2013, 12:02. Показов 1643. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток всем пресутствующим ) Если кому не сложно кинте пожалуйста сюда пример содержаший клас который содержит несколько полей string и перегруженый оператор

C++
1
2
ofstream& operator<<(ofstream&fs,const Person& a)
ifstream& operator>>(ifstream&fs,Person&a)
Думаю у когонибудь есть заранее примного благодарен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2013, 12:02
Ответы с готовыми решениями:

class/string/ifstream/ofstream
Доброе время суток всем!! Люди я уперся в стену и буду признателен за помощь date.h #pragma...

ifstream ofstream
как работают данные файловые операции, объясните пожалуйста куда происходит запись ена жёстком...

C++ файлы ifstream/ofstream
Доброе время суток нужна небольшая помощь с записью/считыванием из файла вообщем при считывание из...

ifstream/ofstream/fstream
#include &lt;fstream&gt; fstream autosave; autosave.open(&quot;...autosave.txt&quot;); char x; autosave...

8
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.08.2013, 12:07 2
getline вам в помощь.
строки разделяем каким-то разделителем.
0
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
07.08.2013, 12:17  [ТС] 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;
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.08.2013, 12:19 4
Цитата Сообщение от alex1392 Посмотреть сообщение
идея в том чтобы влепить туда разделители ?
ну надо же знать где заканчивается одна строка и начинается другая

Цитата Сообщение от alex1392 Посмотреть сообщение
Честно говоря сколько я делал все это я туда лепил количевство символов для считываяния а теперь вот разбираюсь со string и выходит что тут принцип предыдущего опыта не работает
можно и через количество символов
0
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
07.08.2013, 13:07  [ТС] 5
Цитата Сообщение от Jupiter Посмотреть сообщение
ну надо же знать где заканчивается одна строка и начинается другая


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

Добавлено через 44 минуты
Ребят брости ктонить пример или ссылку на нормальный пример ибо сам пишу но оно работает не коректно нашол способ сделать нормальное считывание записи string но из-за него потом возникает проблемы в дальнейшем решить проблему могу если заменить интовые переменные стрингом но этожи полный бред ) кому не сложно киньте нормальный пример
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.08.2013, 13:08 6
нет, показывай что пишешь
0
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
07.08.2013, 13:17  [ТС] 7
Цитата Сообщение от Jupiter Посмотреть сообщение
нет, показывай что пишешь
сверху уже все лежит из того что написано кроме ifstream ofstream
только нуна туда еше getline впихнуть )) я со стринг токо начал разбиратьсо )
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.08.2013, 13:20 8
Цитата Сообщение от alex1392 Посмотреть сообщение
нашол способ сделать нормальное считывание записи string но из-за него потом возникает проблемы в дальнейшем решить проблему могу если заменить интовые переменные стрингом но этожи полный бред
вот это показывай

Цитата Сообщение от alex1392 Посмотреть сообщение
сверху уже все лежит
там лежит для класса date, а вопрос был по классу Person, хватит уже отмазываться
0
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
07.08.2013, 13:36  [ТС] 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;
}
При такой записи искажаются данные даты
0
07.08.2013, 13:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2013, 13:36
Помогаю со студенческими работами здесь

Перегрузка ifstream и ofstream?
Есть класс //test.h cass test { private: int i; string st; public:

Функции ifstream , ofstream. Исправить
Помогите исправить код пжлст, не работает прога( #include &quot;stdafx.h&quot; #include &lt;iostream&gt;...

ifstream, ofstream и объекты класса
Доброго времени суток, помогите пожалуйста разобраться. Есть некий класс: class Tr { public:...

Работа с потоками ofstream/ifstream
Добрый вечер! Помогите, пожалуйста, с задачей! Дан класс: class data { char str; //дата...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru