C++ ifstream - Unvollständiger Typ?

badday

Commander
Registriert
Sep. 2007
Beiträge
3.023
Moin zusammen,

ich schreibe gerade an einem kleinen Programm, dass eine Datei einließt, bis das Ende der Datei erreicht ist, den Stream dann zurücksetzt und ihn zurückgibt:

Code:
#include <iostream>

using namespace std;



istream& our_func(istream& our_stream)
{

while(our_stream.eof()==false)
{

 cout<<our_stream<<endl;

}

our_stream.clear();

   return our_stream;

}


int main()
{

string file;
cout<<"Well, tell me the file"<<endl;
cin>>file;
ifstream some_stream(file.c_str());
our_func(some_stream);
some_stream.close();




}

Das ganze wird jedoch quittiert mit:
30|Fehler: Variable »std::ifstream some_stream« hat Initialisierung, aber unvollständigen Typ|

Ich frage mich nun, was an dieser Initialisierung falsch sein soll, schließlich wandle ich einen String in einen String im C-Stil um, was meines Wissens passen sollte. Ohne Umwandlung ist das Resultat das selbe, auch ein String-Literal ändert nichts.

Abschließend möchte ich noch bemerken: Ja, es gibt komfortablere Lösungen des Problems, aber das Programm dient der Übung mit Status und Streams. Daher bitte keine alternativen Lösungsvorschläge machen.

Danke.

Gruß,

badday
 
Code:
ifstream some_stream(file.c_str());

Täusche ich mich oder sollte das eher

Code:
istream some_stream = new istream(file.c_str());

lauten???
 
Scheint auch nicht zu funktionieren.
Das Resultat deines Vorschlags:
|30|Fehler: keine passende Funktion für Aufruf von »std::basic_istream<char, std::char_traits<char> >::basic_istream(const char*)«|

Wenn ich versuche, den Typ ifstream beizubehalten, bekomme ich wieder die Meldung, der Typ sein nicht vollständig.
Vielleicht noch andere Ideen?

Danke schonmal.

Gruß,

badday
 
Oje, ich habe den Fehler nun bemerkt, ich habe vergessen fstream einzubinden.

Trotzdem Danke an alle.

Gruß,

badday
 
Bei deinem gepostetem Code fehlt auch noch der string Header und die main Funktion hat keinen Rückgabewert, nur mal so als Anmerkung ;)

Gruß
BlackMark
 
Das ganze hat sich nun geklärt.

Vielen Dank!

Gruß,

badday
 
Zuletzt bearbeitet:
Zurück
Oben