2012-11-20 58 views
2

我想知道,并没有找到任何建议,关于如何将C风格的整数阵列从C++转换为新的std :: array 11在fread中将int转换为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]; 

回答

7

读入的第一个元素的 地址 阵列的基础数据块应该工作:

fread(stdarr.data(), sizeof(int), stdarr.size(), fp); 
+2

['stdarr.data()'](http://en.cppreference.com/ w/cpp/container/array/data)会稍微习惯一些。 – ildjarn

+0

@ildjarn好点。编辑。 – juanchopanza

+0

谢谢:-)我知道这必须以任何方式工作:-) – Stefan