Bon voila, j'ai reussi ce que je voulais faire, je post ici ce qui m'a grandement aidé (trouvé sur le net et modifié par moi en guise de test), on sait jamais ca peut peut être aider quelqu'un d'autre. C'est peut etre pas le truc le plus optimisé mais bon ca donnera sans doute une base de départ. Voilou
- include <iostream>
- include <fstream>
- include <vector>
- include <string>
- include <iterator>
using namespace std;
class Plop {
public :
string name;
string tmp;
pair<string, string> myObj;
Plop () {}
Plop (string i, string s):myObj(i,s), name("ploppy"), tmp("tmp") {}
Plop (const pair<string, string> & obj) : myObj(obj) {}
friend ostream& operator<< (ostream& stream, Plop const &obj) {
stream << obj.name << " " << obj.tmp;
stream << " " <<obj.myObj.first << " " << obj.myObj.second << " ";
return stream;
}
friend istream& operator>> (istream& stream, Plop &obj) {
string n, t, obj1, obj2;
stream >> n;
stream >> t;
stream >> obj1;
stream >> obj2;
return stream;
}
};
int main() {
vector<Plop> v;
vector<string>vv;
string tmp;
char* fileName = "output_file";
Plop p1("11","AA");
Plop p2("22","BB");
Plop p3("33","CC");
Plop p4("44","DD");
Plop p5("55","EE");
Plop p6("66","FF");
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
v.push_back(p4);
v.push_back(p5);
v.push_back(p6);
/*
ofstream ofs(fileName, ios::out | ios::binary);
ostream_iterator<Plop> osi(ofs);
cout << v.size() <<endl;
copy(v.begin(), v.end(), osi);
*/
ifstream ifs(fileName, ios::in | ios::binary);
istream_iterator<string> isi(ifs);
copy(isi, istream_iterator<string>(), back_inserter(vv));
cout << "------" << endl;
cout << vv.size() << endl;
vector<string>::iterator it=vv.begin();
for ( it = vv.begin(); it!= vv.end(); ++it ) {
cout << *it << endl;
}
return 0;
}