>> operator
-
hi, ich möchte gerne den >> operator überladen, dabei möchte ich die Elemente einer stl-liste wieder einlesen können. Leider habe ich keine idee , wie man dieses umsetzt.
std::list<int> list;
den Ausgabeoperator habe ich so implementiert:
ostream& operator<<(ostream& os,std::list<int> list)
{
std::list<int>::const_iterator it = list.begin();
for()
{
os << *list;
}
return os;
}wie würde man denn den passenden Eingabeoperator für das Einlesen der Listenelemente definieren???
mfg dohan
-
#include "stdafx.h" #include <list> #include <iterator> #include <fstream> #include <algorithm> #include <iostream> std::ostream & operator<<(std::ostream & out,const std::list<int> & liste) { std::copy(liste.begin(),liste.end(),std::ostream_iterator<int>(out," ")); return out; } std::istream & operator>>(std::istream & in,std::list<int> & list) { std::copy(std::istream_iterator<int>(in),std::istream_iterator<int>(),std::back_inserter(list)); return in; } int main(int argc, char argv[]) { std::list<int> test; test.push_back(1); test.push_back(2); test.push_back(3); test.push_back(4); std::fstream file("t:\\test.txt",std::ios::out); file<<test; file.close(); file.clear(); file.open("t:\\test.txt"); test.clear(); file>>test; std::cout<<test; return 0; }
-
Hmm... Wenn ich das auf cin anwende kommt der op>> nicht zurück
Wo is der Denkfehler
-
Knuddlbaer schrieb:
Hmm... Wenn ich das auf cin anwende kommt der op>> nicht zurück
Wo is der DenkfehlerWann ist die Eingabe denn aus?
Du brauchst irgendeine Abbruch-Bedingung
-
Hm...
Die soll aus sein wenn ifstream<int>() ist.
Bei ifstream gehts ja.
Ich dachte wenn ich bei cin die Eingabe mit ENTER abschliesse trifft das zu.
Wie gibt man denn bei cin ein ende an ?
-
Knuddlbaer schrieb:
Wie gibt man denn bei cin ein ende an ?
IIRC ist das Ende immer EOF
Und wann kommt bei der Standardeingabe ein EOF? Unter Linux ist es mit Strg-D - unter Windows vielleicht Strg-Z? Keine Ahnung. Auf jedenfall nichts was der User normalerweise eingibt.
-
Hmmm.... ich nehme zu wenig von der Konsole entgegen O
thx - erneut was gelernt.