Dateininhalt in ein String Objekt einlesen

Hallo erstmal!

Also wie das Topic schon sagt möchte ich ein File öffnen und anschließend dessen inhalt in ein String Objekt packen. (Möglichst nicht über Konstruktor da es schon vorher instanziiert wird)
Ich hab folgendes schonmal probiert:

#include 
#include 
#include 
using namespace std;

void OpenFile()
{
 string FileContent;

 ifstream input("test.cfg");

 while(in.eof() != true)

 {

 FileContent = input.get();

 };

//usw. dann folgt noch main aber is unwichtig...
}

Soweit so gut, wenn ich jetzt compile und teste friert das Programm immer ein. Ich vermute dass das da eine Endlosschleife ist aber so stand es auch in MSDN das eof() den bool wert zurückgibt ob das Ende des Files erreicht ist.
Achja: Das String Objekt brauch ich um den Text besser später editieren zu können, nicht dass ihr fragt warum kein char…

Hätte da wer ne Idee?

MfG Pope

Hi,

ifstream input(„test.cfg“);

while(in.eof() != true)

es muss wohl input.eof() heißen!
Sonst hast du in der Tat eine Endlosschleife…

Ciao, Bill

Ähm, hab mich verschrieben =)
Also daran liegts net…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo
ich vermute dass du das TRUE groß schreiben mußt (Case-Sensitiv)

while(in.eof() != TRUE)

ist aber nur eine vermutung :smile:

Greetx
Eric

(int != bool) ist von übel
Auch hallo.

while(input.eof() != true)

Wenn ich die Sache richtig sehe, liefert eof() ein ‚int‘-artiges Ergebnis. Solange die Bedingung EOF nicht erfüllt ist, kommt also 0 zurück. Sobald EOF erreicht ist kommt irgendwas anderes, aber nicht unbedingt 1 raus [es gilt int(true) == 1].

Machst Du so:

while (! input.eof())

Gruß, Ralf

Hallo,

also ich habe es mit VC6++ so eingebunden und es funktioniert

void OpenFile()
{ 
 string FileContent; 
 ifstream input("test.cfg"); 

 while(!input.eof()) 
 { 
 FileContent += input.get(); 
 }
}

Du hast das += vergessen - kriegst also immer nur ein Zeichen. Probier mal die test.cfg als Textfile zu erstellen (im gleichen Verzeichnis wies Programm (besser noch gebe den PFAD an!) und schreib da mit Notepad was rein. Du wirst sehen, es geht!

Zum Vorschreiber mit true != int: eof() liefert true wenn der Dateizeiger am Ende steht! Naseweis! Hier geht es nämlich um die STL für C++, da gibt es schon ein „true“ im Gegensatz zu reinem C - wo tatsaechlich ein int zurück kommt…

Mfg. Frank

ifstream in(„test.cfg“);

while (!in.eof())
{

FileContent += in.get();

}

cout