Frage zu stringstreams & getline



  • Hi,

    ich habe zum Thema stringstreams & getline oft dieses Codefragment gesehen (hier von CarstenJ):

    stringstream wort; 
    wort << "das,ist,ein,test" << endl; 
    string blah; 
    while(getline (wort, blah, ',')) cout << blah << endl;
    

    Jetzt zu meiner Frage, ich dachte der Prototyp von getline sähe so aus:

    istream &getline(char *buf, streamsize num, char delim);
    

    Jedoch wird hier anstatt eines "char *" ein stringstream und anstatt der stream länge wird ein string übergeben in den das ergebnis geschrieben wird.

    Ich wäre echt dankbar wenn mir kurz jemand erläutern könnte wieso das ganze so funktioniert, gibt es etwa noch eine überladene Funktion von geline die ich noch nicht kenne oder wieso und weshalb???
    Wolle.



  • Hallo,
    die von dir zitierte Version von getline ist eine *Memberfunktion* von istream.
    Es gibt aber noch eine freie Funktion getline (wird in <string> definiert), die folgende Deklaration besitzt:

    template<class E, class T, class A>
    basic_istream<E, T>& getline(
            basic_istream <E, T>& is,
            basic_string<E, T, A>& str);
    

    Oder für Freunde der Vereinfachung:

    istream& getline(istream& is, string& str);
    


  • Ok danke schön.
    🙂


Anmelden zum Antworten