Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
#1

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

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

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

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

class/string/ifstream/ofstream - C++
Доброе время суток всем!! Люди я уперся в стену и буду признателен за помощь date.h #pragma once #include &lt;iostream&gt; #include...

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

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

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

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

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

8
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.08.2013, 12:07 #2
getline вам в помощь.
строки разделяем каким-то разделителем.
0
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
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
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.08.2013, 12:19 #4
Цитата Сообщение от alex1392 Посмотреть сообщение
идея в том чтобы влепить туда разделители ?
ну надо же знать где заканчивается одна строка и начинается другая

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


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

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

Цитата Сообщение от alex1392 Посмотреть сообщение
сверху уже все лежит
там лежит для класса date, а вопрос был по классу Person, хватит уже отмазываться
0
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2013, 13:36
Привет! Вот еще темы с ответами:

Неправильно выполнение ifstream, ofstream - C++
Не происходит ни открытие файла, ни выполнение операций ввода-вывода ...

Сокращенная запись ifstream и ofstream - C++
#include &lt;fstream&gt; using namespace std; int main() { fstream I(&quot;input.txt&quot;), O(&quot;output.txt&quot;, 2); что означает второй...

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

Работаем с потоками на C++ ofstream и ifstream - C++
Доброго времени суток! Подскажите пожалуйста, как при использовании ofstream и ifstream переставить курсор в начало файла?


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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