簡體   English   中英

了解C ++ Vecotor

[英]fread to C++ Vecotor

我有一個二進制文件

FILE *fp;
fp = fopen("file_name.data", "rb");

可以使用fread()和以下C代碼成功讀取

int S = 8;
int *table = (int*)malloc(S*sizeof(int));
fread(table, S*sizeof(int), 1, fp);

但是當我將文件讀取到C ++向量時,結果是錯誤的

vector<int> table;
table.resize(S);
fread(&table[0],table.size(), 1, fp);

上面的代碼有什么問題嗎?

table.size()返回std::vector的元素數,而不是字節數。 就像在C代碼中一樣,您仍然需要將其乘以每個元素的大小。

fread(&table[0],table.size()*sizeof(int), 1, fp);

您的fread應該是:

fread (&table[0], sizeof(vector<int>::value_type), table.size(), fp);
// OR
fread (&table[0], sizeof(int), table.size(), fp);

兩者似乎都是錯誤的(盡管C版本看起來可以工作)。

請參閱: http : //www.tutorialspoint.com/c_standard_library/c_function_fread.htm

試試這些:

int S = 8;
int *table = (int*)malloc(S*sizeof(int));
fread(table, sizeof(int), S, fp);

vector<int> table;
table.resize(S);
fread(&table[0], sizeof(int), table.size(), fp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM