Wie zu Lesen, schweben Sie mit der wissenschaftlichen notation aus der Datei C++?

Ich habe eine Datei mit diesem format:

-0.0064785667 0.73900002 0.028505694 4.7858757e-39 315 218
-0.0051828534 0.73900002 0.028505694 4.6936954e-39 316 218
-0.0038818798 0.73799998 0.028467119 5.1546736e-39 317 218
-0.0025879198 0.73799998 0.028467119 5.6160217e-39 318 218
-0.0012939599 0.73799998 0.028467119 6.4461411e-39 319 218

Lese ich es mit diesem code:

using namespace std;   

ifstream inputFile;

//Opens data file for reading.
inputFile.open(filePath.c_str());

//Creates vector, initially with 0 points.
vector<Point> data(0);
float temp_x,temp_y,temp_z,rgb=0,discard_1=0,discard_2=0;

//Read contents of file till EOF.
while (inputFile.good()){

    inputFile >> temp_x >> temp_y >> temp_z >> rgb >> discard_1 >> discard_2;

    data.push_back(Point(temp_x,temp_y,temp_z,rgb));

}

if (!inputFile.eof())
    if (inputFile.fail()) cout << "Type mismatch during parsing." << endl;
    else cout << "Unknow problem during parsing." << endl;

//Close data file.
inputFile.close();

Lesen der wissenschaftlichen notation float Ergebnisse in einem Typenkonflikt.

Wie kann ich Lesen Sie alle zahlen einschließlich der wissenschaftlichen notation schwimmen?

  • haben Sie versucht, die Deklaration der Variablen als double?
  • Ich nicht reproduzieren dieser Fehler. Können Sie bieten ein komplettes Programm, dass zeigt die Fehler (ideallly indem geändert wird, das Beispiel, das ich gepostet)?
  • Versucht deklarieren rgb als verdoppeln, und ist in Betrieb. Aber ich würde gerne in der Lage sein zu Lesen der Schwimmer direkt...
  • Sie erhalten einen fail-Zustand, wenn Sie versuchen zu Lesen, dass ein float, was größer ist, dass der max Schwimmer (etwa 3.40E38). Das ist nicht der Fall mit den Werten, die Sie hier zeigen (Sie sollte gelesen werden als 0 in einer float), könnte aber erklären, warum es funktioniert mit Doppel-und nicht mit float.
InformationsquelleAutor Luis | 2012-01-24
Schreibe einen Kommentar