如何写入和读取二进制文件?

时间:2013-07-25 11:45:24

标签: c++ file-io binaryfiles

我用C ++编写了一个在空间中移动的球的代码(3D点)。我有它的所有动作位置。我的意思是,它通过的所有路径点。

我必须将其所有位置\点写入二进制文件,然后读取它以恢复移动\路径。例如,如果我向上和向右移动球,我会想要保存它所经过的所有位置,然后我可以读取它们并将球移动相同,恢复它的路径。

我看到了一个二进制文件的例子,但它对我说不多:

 // reading a complete binary file
 #include <iostream>
 #include <fstream>
 using namespace std;

 ifstream::pos_type size;
 char * memblock;

 int main () {
   ifstream file ("example.bin", ios::in|ios::binary|ios::ate);
   if (file.is_open())
   {
     size = file.tellg();
     memblock = new char [size];
     file.seekg (0, ios::beg);
     file.read (memblock, size);
     file.close();

     cout << "the complete file content is in memory";

     delete[] memblock;
   }
   else cout << "Unable to open file";
   return 0;
 }

是否自动创建文件?那在哪里?那么写和读点(X,Y,Z)呢?我应该通过二进制字节写它吗?或作为点和文件使其成为二进制..?

1 个答案:

答案 0 :(得分:1)

您可以将一个点(X,Y,Z)写入二进制文件,分隔坐标,例如冒号,以分号分隔:

int X=10, Y=12, Z=13;
ofstream outfile("points.bin", ios::binary);
if (!outfile)
    cerr << "Could not open a file" << endl;
else
    outfile << X << ','
            << Y << ','
            << Z << ';';