>> 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 Denkfehler 😕

    Wann 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.


Anmelden zum Antworten