Ich versuche, eine .ply
Datei mit C++ zu lesen und die geometrischen Informationen in Vektoren zu speichern (Die Grenzpunkte sind floats
und die Randdreiecke sind int's
. Der Code funktioniert unter Linux, aber wenn ich versuche, es unter Windows zu verwenden, es nicht wie erwartet verhaltenVerschiedene Ergebnisse beim Öffnen einer binären .ply-Datei mit ifstream unter Windows und Linux
Hier ist eine abgespeckte Version des Codes ist.
#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>
using namespace std;
string FilenamePLY;
int NumberBorderPoint = 1572866;
int BorderNumberTriangle = 3145728;
char numFloat;
char numInt;
int main(int argc, char** argv)
{
FilenamePLY = "file_test.ply";
ifstream fin(FilenamePLY.c_str());
for (int i = 0; i < NumberBorderPoint; i++){
fin.read(&numFloat, sizeof(float));
for (int j = 0; j < 3; j++) {
fin.read(&numFloat, sizeof(float));
}
}
cout << fin.gcount() << endl;
for (int i = 0; i<BorderNumberTriangle; i++){
fin.read(&numInt, sizeof(int));
for (int j = 0; j<3; j++) {
fin.read(&numInt, sizeof(int));
}
}
cout << fin.gcount() << endl;
return 0;
}
der Code kompiliert und ausgeführt unter Windows Ausgänge:
0
0
unter Linux Während der Ausgang ist:
4
4
Mein Gefühl ist, dass die Lesefunktion nicht die richtigen Werte bekommt die Zahlen in den Binär-Dateien zu trennen, aber sizeof(float)
und sizeof(int)
beide haben den gleichen Wert unter Windows und Linux (4).
Irgendwelche Ideen, wo das Problem liegt?
Vielen Dank für Ihre Hilfe,
Sie keinen Fehler Trapping haben. Haben Sie debugged und testen auf einen Fehler beim Öffnen der Datei? –
Können Sie ein Beispiel für die zu lesende Eingabedatei zeigen? –