Problem getline()



  • Hallo,
    kann es sein, dass du irgendwo <fstream.h> bzw. <iostream.h> inkludierst? Wenn ja, ersetze diese durch <fstream> bzw. <iostream>.

    Und teste mal folgendes Minimalprogramm:

    #include <fstream>
    #include <string>
    using namespace std;
    int main()
    {
        ifstream File("Bla.txt");
        string Foo;
        getline(File, Foo);
    }
    

    Lässt sich das fehlerfrei übersetzen?



  • ja das stimmt! hab es selber auch gerade gemerkt!

    jedoch ich brauch die .h includes für cout, fstream usw!!

    wie kann ich das umgehn??



  • jedoch ich brauch die .h includes für cout, fstream usw!!

    Nein brauchst du nicht.
    Auch <iostream> bietet ein cout und auch <fstream> bietet dir die Klasse fstream. Allerdings sind alle Namen in diesem Fall im Namensraum std. Du musst sie also entweder explizit qualifizieren (std::cout), die gewünschten durch using-Deklarationen (using std::cout) oder alle durch die using-Direktive using namespace std; global bekannt machen.

    Und noch was zum Lesen: http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ



  • scheint nicht hinzuhaun!
    hab in allen datein die <iostream.h> durch ohne .h ersetzt, sowie using namespace sdt; definiert!

    fehlermeldung!:

    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(38) : error C2143: Syntaxfehler : Fehlendes ';' vor '&'
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(38) : error C2433: 'istream' : 'friend' bei der Deklaration von Daten nicht zulaessig
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(38) : error C2501: 'istream' : Fehlende Speicherklasse oder Typbezeichner
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(38) : error C2244: 'istream' : Funktionsueberladung kann nicht aufgeloest werden
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(38) : error C2061: Syntaxfehler : Bezeichner 'istream'
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(38) : error C2501: '>>' : Fehlende Speicherklasse oder Typbezeichner
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(38) : error C2805: Binaerer Operator '>>' hat zu wenig Parameter
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(39) : error C2143: Syntaxfehler : Fehlendes ';' vor '&'
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(39) : error C2433: 'ostream' : 'friend' bei der Deklaration von Daten nicht zulaessig
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(39) : error C2501: 'ostream' : Fehlende Speicherklasse oder Typbezeichner
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(39) : error C2244: 'ostream' : Funktionsueberladung kann nicht aufgeloest werden
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(39) : error C2061: Syntaxfehler : Bezeichner 'ostream'
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(39) : error C2501: '<<' : Fehlende Speicherklasse oder Typbezeichner
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\date.h(39) : error C2805: Binaerer Operator '<<' hat zu wenig Parameter
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(46) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(89) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(95) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(97) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(104) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(105) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(106) : error C2872: 'cin' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(107) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(111) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(124) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(124) : error C2679: Binaerer Operator '<<' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class date' akzeptiert (od
    er keine geeignete Konvertierung moeglich)
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(125) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(130) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(132) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(140) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(141) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(142) : error C2872: 'cin' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(143) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(147) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(162) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(163) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(163) : error C2679: Binaerer Operator '<<' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class date' akzeptiert (od
    er keine geeignete Konvertierung moeglich)
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(164) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(170) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(172) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(180) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(181) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(182) : error C2872: 'cin' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(183) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(187) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(195) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(218) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(219) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(247) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(248) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(256) : error C2872: 'fstream' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(261) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(275) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(276) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(277) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(295) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(300) : error C2872: 'cout' : Mehrdeutiges Symbol
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(305) : error C2780: 'class std::basic_istream<_E,_Tr> &__cdecl std::getline(class std::basic_istream<_E,_Tr> &,class std::basic_string<_E,_
    Tr,_A> &,const _E)' : Erwartet 3 Argumente - 2 unterstuetzt
    c:\programme\microsoft visual studio\vc98\include\string(149) : Siehe Deklaration von 'getline'
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(305) : error C2784: 'class std::basic_istream<_E,_Tr> &__cdecl std::getline(class std::basic_istream<_E,_Tr> &,class std::basic_string<_E,_
    Tr,_A> &)' : Vorlagenargument fuer 'class std::basic_istream<_E,_Tr> &' von 'class fstream' konnte nicht hergeleitet werden
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(305) : error C2784: 'class std::basic_istream<_E,_Tr> &__cdecl std::getline(class std::basic_istream<_E,_Tr> &,class std::basic_string<_E,_
    Tr,_A> &)' : Vorlagenargument fuer 'class std::basic_istream<_E,_Tr> &' von 'class fstream' konnte nicht hergeleitet werden
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(305) : error C2784: 'class std::basic_istream<_E,_Tr> &__cdecl std::getline(class std::basic_istream<_E,_Tr> &,class std::basic_string<_E,_
    Tr,_A> &)' : Vorlagenargument fuer 'class std::basic_istream<_E,_Tr> &' von 'class fstream' konnte nicht hergeleitet werden
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(305) : error C2784: 'class std::basic_istream<_E,_Tr> &__cdecl std::getline(class std::basic_istream<_E,_Tr> &,class std::basic_string<_E,_
    Tr,_A> &)' : Vorlagenargument fuer 'class std::basic_istream<_E,_Tr> &' von 'class fstream' konnte nicht hergeleitet werden
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(305) : error C2784: 'class std::basic_istream<_E,_Tr> &__cdecl std::getline(class std::basic_istream<_E,_Tr> &,class std::basic_string<_E,_
    Tr,_A> &)' : Vorlagenargument fuer 'class std::basic_istream<_E,_Tr> &' von 'class fstream' konnte nicht hergeleitet werden
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(305) : error C2784: 'class std::basic_istream<_E,_Tr> &__cdecl std::getline(class std::basic_istream<_E,_Tr> &,class std::basic_string<_E,_
    Tr,_A> &)' : Vorlagenargument fuer 'class std::basic_istream<_E,_Tr> &' von 'class fstream' konnte nicht hergeleitet werden
    d:\eigene dateien\dokumente\unidokumente\informatik\4.semester\software 2\übung\6. übung\taskplaner\slist.cpp(305) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen.
    Fehler beim Ausführen von cl.exe.



  • error C2872: 'cout' : Mehrdeutiges Symbol

    Dieser Fehler weist darauf hin, dass du irgendwo noch ein <iostream.h> bzw. <fstream.h> drin hast.

    Welchen Compiler verwendest du? Und poste mal bitte ein Minimalbeispiel. Am Besten mit der friend-Geschichte.



  • Also diese .h datei macht mir eigentlich am meisten probleme! :

    #ifndef DATE_H
    #define DATE_H
    
    using namespace std;
    
    class date {
    
    public:
    
    //constructors
    date();
    date(const int d, const int m, const int y);
    
    //copy-constructor
    date(date &d);
    ~date();
    
    //Set-Funktionen
    void setDay  (int d);
    void setMonth(int m);
    void setYear (int y);
    void setWeekday(void);
    void setWeekdayName(char n[3]);
    void setAktuellDate();                 //liefert das aktuelle datum!
    
    //Get-Funktionen
    int getDay  (void);
    int getMonth(void);
    int getYear (void);
    
    //Char-Funktion
    void atoDate(const char *test);
    
    //Stream-Operatoren
    friend istream & operator >> (istream & i, date &d);
    friend ostream & operator << (ostream & o, date &d);
    
    //Vergleichsoperatoren
    friend bool operator <  (const date &d, const date &e);
    friend bool operator >  (const date &d, const date &e);
    friend bool operator <= (const date &d, const date &e);
    friend bool operator >= (const date &d, const date &e);
    friend bool operator == (const date &d, const date &e);
    
    //Instanzvariablen
    private:
    int day;
    int month;
    int year;
    char weekday[3];
    };
    
    //------------------------------------------------------------------------------------------------
    #endif //DATE_H
    

    ich habe alle dateien umgestellt auf <iostream> und <fstream>

    geht immer noch nicht!



  • Hallo,
    diese Datei ist so für die Lösung deines Problems völlig nutzlos.
    1. Handelt es sich um einen Header.
    2. Schreibst du using namespace std; obwohl bis dato kein Namespace std existiert
    3. Schreibst du istream& und ostream&, obwohl es keine solchen Klassen im Kontext von Date.h gibt.

    Du musst schon ein prinzipiell compilierbares Beispiel posten.



  • Original erstellt von HumeSikkins:
    **3. Schreibst du istream& und ostream&, obwohl es keine solchen Klassen im Kontext von Date.h gibt.
    **

    doch dat hier 😉

    //Stream-Operatoren
    friend istream & operator >> (istream & i, date &d);
    friend ostream & operator << (ostream & o, date &d);
    

    include <iostream>, kille das using namespace std (hat in header nichts zu suchen, weil der der den header includet will vielleicht nicht namespace std offen haben)

    und mache aus

    friend istream & operator >> (istream & i, date &d);
    friend ostream & operator << (ostream & o, date &d);
    

    ein

    friend std::istream & operator >> (std::istream & i, date &d);
    friend std::ostream & operator << (std::ostream & o, date &d);
    

    [ Dieser Beitrag wurde am 23.04.2003 um 01:25 Uhr von Dimah editiert. ]



  • include <iostream>,

    Na na. Kein Grund für schwere Geschütze. Ein <iosfwd> reicht hier auch 🙂



  • was dann noch zu erwähnen wäre das er dann in der cpp datei iostream includen muss


Anmelden zum Antworten