Problem getline()
-
Original erstellt von hares:
**
und eben auch den operator istream und ostream! (funken auch super!)
**meinst du die konvertierungsoperatoren oder die shiftops (<< und >> )?
und
string str = "test oder so";
weshalb nicht einfach nur:
string str;
-
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 ifstream' 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 ifstream' 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 ifstream' 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.so sieht die fehlermeldung bezüglich getline aus! was soll das denn?
in jedem anderen meiner programme läuft es! (kein normaler fehler!)aja das mit str = " sfsafg" ist nur zum testen für mich gewesen!
hat es vielleicht etwas damit zum tun, dass ich die operatoren << und >> überladen habe?
falls ja, wie kann ich angeben, dass nicht diese gemeint sind??
naja, danke erstmal!
-
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