IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Запись и чтение контейнеров(а именно vector), через операторы вставки и извлечения.
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Можете привести примеры чтения и записи вектора через операторы << и >>?
я просто пока плохо представляю как это реализовать.. norespect.gif

допустим вот для этого пример :

class Team
{
public :
friend ostream& operator << (ostream& outs, const vector<Team>&);
friend istream& operator >> (istream& sin, vector<Team>&);
friend void file_save(const vector<Team>&);
private:

string TeamName;
int win;
int lose;
int draw;
int score;

};




ostream&  operator << (ostream& outs, const vector<Team>& v) 
{
outs << "Team " << " Wins " << "Loses " << "Draws " << "Scores\n";
for (unsigned int i=0;i<v.size();i++)
{

outs << v[i].TeamName;
set_spaces_t(v,i);
outs << v[i].win << " " << v[i].lose << " " << v[i].draw << " " << v[i].score << "\n";

}

return outs;
}


Как надо правильно переопределить оператор >> для чтения из файла?.
вот функция записи допустим
:
void file_save(const vector<Team>& v){
char filename[15];
cout <<"Enter a file name(without extension) : ";
cin >> filename;
//filename=filename+".sys";
ofstream outfile(filename);
outfile << v;
}



Извиняюсь,Если как-то плохо объяснил что нужно,или наплел тут чуши - голова уже не варит к концу дня.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Нет, так не пойдет... Надо разделять данные... Хотя бы пробелами smile.gif

Смотри:

team.h
#ifndef TEAM_H_
#define TEAM_H_

#include <iostream>
#include <string>
#include <vector>

using namespace std;

class Team
{
friend ostream& operator << (ostream&, const Team& );
friend istream& operator >> (istream&, Team& );
public:
string TeamName;
int win;
int lose;
int draw;
int score;

Team ();
};

// Это - НЕ метод класса, не нужно инициализировать лишний объект,
// чтобы через него вызывать эту функцию.

void file_read(vector<Team>&);

#endif /*TEAM_H_*/




main.cpp
...

ostream& operator << (ostream& os, const Team& ob)
{
os << ob.TeamName << " " << ob.win << " " << ob.lose <<
" " << ob.draw << " " << ob.score;
return os;
}

istream& operator >> (istream& is, Team& ob)
{
int ch; // <--- Добавлено

getline(is, ob.TeamName, ' ');
is >> ob.win >> ob.lose >> ob.draw >> ob.score;

while(is && (ch = is.get()) != '\n'); // <--- Добавлено
return is;
}

void file_read(vector<Team>& vt) {

// Хотя вот это я бы сделал ДО вызова file_read(), и передавал
// бы сюда уже именно открытый поток ввода, как и показал выше

string filename;
cout <<"Enter a file name(without extension) : ";
cin >> filename;
filename = filename + ".txt";

ifstream infile(filename.c_str(), ios::in);
Team t;
while(infile >> t) {
vt.push_back(t);
}
infile.close();
}

vector<Team> vt;
int main() {

file_read(vt); // Читаем

// Проверяем
for(vector<Team>::iterator it = vt.begin(); it != vt.end(); it++) {
cout << *it << endl;
}
return 0;
}

Вот так...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Andrewshkovskii   Запись и чтение контейнеров(а именно vector)   31.05.2008 3:15
volvo   А зачем, собственно, тебе перегружать операцию вво…   31.05.2008 3:35
Andrewshkovskii   ну как видно по коду,он так же будет создан не пра…   31.05.2008 3:41
volvo   Ну, так напиши себе метод (скажем, такой: class T…   31.05.2008 3:46
Andrewshkovskii   хм..сейчас попробую.Кстате,вопрос такой : почему д…   31.05.2008 3:48
volvo   Потому, что дружественная функция - это часть инте…   31.05.2008 4:04
Andrewshkovskii   хм..спасибо=) Написал тут кое-что..только почему-т…   31.05.2008 4:12
volvo   Сам не догадываешься? Чему равен размер вектора пр…   31.05.2008 4:16
Andrewshkovskii   Спасибо и в этот раз...надо всетаки нормально в Ла…   31.05.2008 4:17
volvo   Я ж тебя просил привести пример файла, из которого…   31.05.2008 4:33
Andrewshkovskii   содержимое файла : team11236team21236 Как заполн…   31.05.2008 4:36
volvo   Нет, так не пойдет... Надо разделять данные... Хот…   31.05.2008 4:58
Andrewshkovskii   Спасибо за помощь!Но всеравно не много не пони…   31.05.2008 21:33
volvo   Да, если ты хочешь иметь возможность сортировать в…   31.05.2008 23:11
Andrewshkovskii   Ну я отсутствовал в инете пару дней..когда ты сказ…   2.06.2008 23:02
volvo   Насколько я вижу - вот так будет лучше: bool exsi…   2.06.2008 23:19


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.04.2024 6:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name