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