2012-11-20 61 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