Ich schreibe einen Code, der Daten aus einer TXT-Datei sammelt. Um zur nächsten interessanten Zahl zu gelangen, verwende ich eine Do-While-Schleife. Die erste Do-While-Schleife funktioniert jedoch einwandfrei, aber in der zweiten bleibt die ifstream-Myfile auf dem Wort Pmax hängen. Keine Ahnung, was die Ursache sein könnte. =/Ifstream hängt an einem Wort und erstellt eine Endlosschleife
Hier ist der interessante Teil des Parsers (I XML nicht einmal benutzen obwohl es ein bisschen wie es aussieht):
ifstream myfile;
string comment;
const string filename = "data";
myfile.open(filename.c_str());
do{
myfile>>comment;
} while (comment != "</probScen>");
for (int i=0;i<numberScen;i++){
myfile>>comment;
double prov;
myfile>>prov;
probScen.push_back(prov);
}
do{
if(myfile.eof()){cout<<"EoF reached"<<endl;}
myfile>>comment;
} while (comment != "</Pmax>");
for (int i=0;i<H;i++){
myfile>>comment;
double prov;
myfile>>prov;
Pmax.push_back(prov);
}
Und hier ist der Teil der txt-Datei ich lesen will :
<probScen> scenario s - happening probability </probScen>
1 1
<Pmax> hour h - max price for this hour </Pmax>
1 5
die erste do-while-Schleife des probScen feine Griffe, aber myfile in dem zweiten do-while wird auf Pmax stecken, damit eine Endlosschleife zu schaffen. Um genau zu sein, liest myfile jedes einzelne Wort bis/probScen, dann 1, 1, Pmax, bewegt sich dann aber nicht weiter. Die Datei myfile.eof() gibt nie wahr zurück.
Vielen Dank im Voraus für Ihre Hilfe!
Das einzige, was Sie erreichen werden, indem Sie versuchen, XML auf diese Weise zu parsen, ist ein Artikel auf [http://thedailywtf.com] (http://thedailywtf.com). Sie müssen eine geeignete XML-Parserbibliothek zum Parsen von XML-Dokumenten verwenden. –
Wenn mir das passieren würde (und ich keinen XML-Parser verwende), würde ich einen Debugging-Code hinzufügen, um jedes Wort zu beobachten, das von 'myfile' gelesen wird. Das würde mir zeigen, wo die Dinge stecken geblieben sind. –
Werfen Sie einen Blick auf http://www.boost.org/doc/libs/1_61_0/doc/html/property_tree/parsers.html#property_tree.parsers.xml_parser –