我試圖用C++讀取一個.ply
文件並將幾何信息保存到向量中(邊界點是floats
,邊框三角形是int's
。 Linux下工作,但是當我嘗試使用它在Windows下按預期的行爲不在windows和linux下使用ifstream操作二進制.ply文件時出現的結果不同
下面是代碼的下調版本:
#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;
}
Windows下輸出編譯和執行的代碼:
0
0
而Linux下的輸出是:
4
4
我的感覺是讀取功能沒有得到正確的值到數字的二進制文件分開,但sizeof(float)
和sizeof(int)
都具有相同的價值在Windows和Linux下(4)。
關於問題出在哪裏的任何想法?
感謝你的幫助,
你沒有錯誤捕獲覆蓋其他數據。您是否調試並測試了打開該文件的錯誤? –
你能展示一個正在讀取的輸入文件的例子嗎? –