C++:读/写二进制文件。此代码中发生了什么?

C++: read/write binary files. What's happening in this code?

本文关键字:代码 发生了 什么 二进制文件 C++      更新时间:2023-10-16

我一直在为无格式的I/O的概念而苦苦挣扎。我的课程教科书没有很好地解释它。它给出了小程序,但我不知道这里发生了什么。如果有人能向我解释,我将不胜感激

    #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;
    int main() {
     const unsigned int size = 10;
     int arr[size];
     ifstream infile("small.ppm");
     infile.read(reinterpret_cast<char *>(&arr), size * sizeof(arr[0]));
     infile.close();
     ofstream outfile("newfile.ppm");
     outfile.write((char *)&arr, size * sizeof(arr[0]));
     outfile.close();
    }

read() 和 write() 函数到底做了什么。我知道他们必须将 (char *, buffer_size) 作为参数,但函数本身有什么作用?另外,一旦我使用 read() 读取数据,我该如何存储该数据并对其进行操作?

对不起,这是一个很长的问题。我已经为这个概念苦苦挣扎了一段时间。非常感谢您的帮助

但是函数本身有什么作用呢?

这些是将数据作为逐字节复制到二进制文件/从二进制文件写入/读取数据。

另外,一旦我使用 read() 读取数据,我该如何存储该数据并对其进行操作?

您已经存储了int arr[size]; .您可以使用该int数组操作该数据。

陷阱:

如果该数据在其他计算机上序列化,则会注意到有关特定于计算机的int表示形式的字节序问题。