[英]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.