c++读取二进制文件到数组

C++可以使用文件流来读取二进制文件,并将数据存储到数组中。下面是一个读取二进制文件到数组的基本示例代码:

#include <iostream>
#include <fstream>
using namespace std;
int main()
    const char* filename = "data.bin"; // 二进制文件名
    const int array_size = 100;        // 数组大小
    double my_array[array_size];       // 存储数据的数组
    // 以二进制模式打开文件
    ifstream infile(filename, ios::binary);
    if (!infile)
        cout << "打开文件失败!" << endl;
        return -1;
    // 读取数据到数组
    infile.read((char*)my_array, sizeof(double) * array_size);
    // 检查读取的字节数是否正确
    streamsize bytes_read = infile.gcount();
    if (bytes_read != sizeof(double) * array_size)
        cout << "读取数据失败!" << endl;
        return -1;
    // 输出数组中的数据
    for (int i = 0; i < array_size; i++)
        cout << my_array[i] << endl;
    // 关闭文件
    infile.close();
    return 0;

在这个示例中,我们首先定义了一个指向二进制文件的文件名,以及存储数据的数组的大小。然后,我们使用ifstream类以二进制模式打开文件。如果打开文件失败,程序将输出错误消息并退出。

接下来,我们使用read()函数从文件中读取数据并将其存储到数组中。read()函数的第一个参数是一个指向缓冲区的指针,用于存储读取的数据。在这个示例中,我们将my_array数组的指针转换为char*类型,并将其作为read()函数的第一个参数传递。第二个参数是要读取的字节数,这里我们将其设置为数组大小乘以sizeof(double)

读取完数据后,我们检查实际读取的字节数是否等于我们期望读取的字节数。如果不相等,说明读取数据失败。否则,我们输出数组中的数据,并关闭文件。

需要注意的是,在读取数据时,我们需要将指针类型转换为char*类型,以避免数据类型不匹配的问题。同时,我们还可以使用read()函数读取不同类型的数据,只需将要读取的数据类型的sizeof()值作为read()函数的第二个参数传递即可。

希望这个示例代码能帮助您读取二进制文件到数组。如果您有任何问题或需要进一步的解释,请随时向我提问。

  •