私はC++で始まり、バイナリファイルを読む必要があります。行の異なるデータ型を読む++
'double';'int8';'float32';'float32';'float32';'float32';'float32';'float32';'int8';'float32';'float32';'float32';'float32';'int8';'float32'
またはバイト数の:
私は、ファイルの構造を知るには、すなわち、各ファイルの行がで構成されて
8 1 4 4 4 4 4 4 1 4 4 4 4 1 4
私はいくつかのコードをしたが、あまりにも廃止されました...ここ はコードです:
void test1() {
const char *filePath = "C:\20110527_phantom19.elm2";
double *doub;
int *in;
float *fl;
FILE *file = NULL;
unsigned char buffer;
if ((file = fopen(filePath, "rb")) == NULL)
cout << "Could not open specified file" << endl;
else
cout << "File opened successfully" << endl;
// Get the size of the file in bytes
long fileSize = getFileSize(file);
cout << "Tamanho do ficheiro: " << fileSize;
cout << "\n";
// Allocate space in the buffer for the whole file
doub = new double[1];
in = new int[1];
fl = new float[1];
// Read the file in to the buffer
//fread(fileBuf, fileSize, 1, file);
//fscanf(file, "%g %d %g", doub[0],in[0],fl[0]);
fread(doub, 8, 1, file);
//cout << doub[0]<< " ";
fseek (file ,8, SEEK_SET);
fread(&buffer,1,1,file);
//printf("%d ",buffer);
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(&buffer,1,1,file);
//printf("%d ",buffer);
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(fl,4,1,file);
//cout << fl[0]<< " ";
fread(&buffer,1,1,file);
//printf("%d ",buffer);
fread(fl,4,1,file);
//cout << fl[0]<< "\n";
cin.get();
//delete[]fileBuf;
fclose(file);
}
がどのように私はこれが効率的な方法に変更できますか?
あなたはそれがバイナリファイルだと言います。どのように行を区切っていますか? – jrok
実際、ファイルには行がありません。ファイルそのものは、同一のサンダードバイト列、すなわち8 1 4 4 4 4 4 4 1 4 4 4 4 1 4 8 1 4 4 4 4 4 4 1 4 4 4 4 1 4 ... – luiserta