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()
函数的第二个参数传递即可。
希望这个示例代码能帮助您读取二进制文件到数组。如果您有任何问题或需要进一步的解释,请随时向我提问。