Wie parsen Space-getrennte Floats in C ++ schnell?

Ich habe eine Datei mit Millionen von Zeilen, jede Zeile hat 3 schwimmt durch Leerzeichen voneinander getrennt. Es braucht eine Menge Zeit, die Datei zu Lesen, also versuchte ich, Sie zu Lesen, über die memory-mapped-Dateien, nur um herauszufinden, dass das problem nicht mit der Geschwindigkeit der IO, sondern mit der Geschwindigkeit der Analyse.

Meine aktuelle Analyse ist es, den stream (aufgerufene Datei), und führen Sie die folgenden

float x,y,z;
file >> x >> y >> z;

Jemand in Stack-Überlauf empfohlen, die Verwendung von Boost.Geistes, aber konnte ich nicht finden keine einfache Anleitung, um zu erklären, wie es zu benutzen.

Ich versuche zu finden, eine einfache und effiziente Art und Weise zu analysieren, eine Linie, die wie folgt aussieht:

"134.32 3545.87 3425"

Ich wirklich zu schätzen einige helfen. Ich wollte mit strtok, um es zu teilen, aber ich weiß nicht, wie konvertieren von strings, floats, und ich bin mir nicht ganz sicher, dass es der beste Weg.

Mir nichts aus, wenn die Lösung zu Steigern oder nicht. Ich habe nichts dagegen, wenn es nicht die effizienteste Lösung überhaupt, aber ich bin mir sicher, dass es möglich ist, das doppelte der Geschwindigkeit.

Vielen Dank im Voraus.

InformationsquelleAutor der Frage OopsUser | 2013-07-04

Schreibe einen Kommentar