Mehrere Floats aus String holen
-
Hallo,
ich habe ein ifstream Objekt "is"
Darin enthalten sind beliebige ASCII Zeichen, auch mit Zeilenunterbrechung.1. Frage: Ist das Einlesen zum String "ConfigString" so okay?
stringstream tempstream; char c; while (is.good()) { c = is.get(); if(is.good()) tempstream << c; } ConfigString = tempstream.str();
2. Frage: Aus dem String möchte ich nun einige Floats holen. Diese haben immer
eine feste Anzahl an Zeichen (ZAHLENLAENGE) und stehen direkt hinter Keywords
so wie zB. "[ABC]="#define ZAHLLAENGE 4 // Anzahl an Zeichen die hinter zB "[ABC]=" kommen iFoundbegin = -1; iFoundbegin = ConfigString.find("[ABC]="); if(iFoundbegin!=-1) { tempstring = ConfigString.substr(iFoundbegin+6,ZAHLLAENGE); conversionstream << tempstring; conversionstream >> float1; conversionstream.str(""); conversionstream.clear(); }
Dahinter kommen noch weitere Floats. Ist das effizient auf diese Weise
oder gibt es da was besseres?Viele Grüße!
Huddi
-
Wenn du Einarbeitungszeit in Kauf nehmen kannst, solltest du dir mal boost::spirit anschauen.
-
Hi!
Danke für den Tipp. Ich würde allerdings gerne ohne weitere Bibliotheken
auskommen, da ich das ganze eher als Hobby und zum Verständnis mache.
Ist das Verfahren denn so okay oder eher murks?Grüße
Huddi
-
du kannst eine Textdatei auch mit einem Befehl einlesen:
ifstream file("configs.txt"); string str; getline(file,str,static_cast<ifstream::char_type>(ifstream::traits_type::eof())):
Eine Datei Byte für Byte einlesen ist nicht unbedingt die performanteste Lösung.