在fread中从int []转换为std :: array?

Ste*_*fan 2 c++ std c++11

关于如何从C++ 11将C风格的整数数组转换为新的std :: array,我想知道并且没有找到任何建议

我喜欢std :: array并且使用它很多,无论如何,如果我从二进制文件中读取数据,我会努力复制值.使用fread时有没有更简单的方法?

FILE* fp; // initalize not important here
int arr[12];
std::array<int,12> stdarr;
fread(arr, sizeof(int), 12, fp);
for(int i=0; i < 12; i++)
stdarr[i] = arr[i];
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 7

读入第一个元素数组的底层数据块的地址应该可以工作:

fread(stdarr.data(), sizeof(int), stdarr.size(), fp);
Run Code Online (Sandbox Code Playgroud)

  • [`stdarr.data()`](http://en.cppreference.com/w/cpp/container/array/data)会更加惯用. (2认同)