Здравствуйте, у меня есть бинарный файл где находятся int значения, каждый из которых занимает 4 байта. Я хочу с помощью данной структуры пройти через файл и вывести значения в консоль.
#include <iostream>
#include <cstdio>
using namespace std;
class IntFile
{
public:
//int index = 0;
int value;
FILE* file;
IntFile() {}
~IntFile() {}
int mnumbers[10];
int mnumbers2[10];
// get value from current index in file
int getValue(int index)
{
fseek(file, 4*index, SEEK_SET);
fread(&value, 4, 1, file);
return value;
}
friend struct Move;
struct Move
{
int index = 0;
int value = 0;
bool operator==(const Move&other) const
{
return index == other.index;
}
bool operator!=(const Move&other) const
{
return index!=other.index;
}
int &operator*()
{
return value = IntFile::getValue(int index);
}
Move&operator++()
{
this->index = index+1;
return *this;
}
Move&operator--()
{
this->index = index -1;
return *this;
}
};
Move begin()
{
fseek(file, 0, SEEK_SET);
//index = 0;
}
Move end()
{
fseek(file, 0, SEEK_END);
//index = 9;
}
};
int main()
{
IntFile file;
int A;
for ( int i = 0; i < 10; i++)
{
file.mnumbers2[i] = 0;
cout << file.mnumbers2[i] << " ";
}
file.file = fopen("text.txt", "r+b");
for (IntFile::Move Iter = file.begin(); Iter != file.end(); ++Iter)
{
fread(file.mnumbers2,4,1,file.file);
cout << " I " << endl;
//cout << "Iterator: " << Iter;
}
cout << endl;
A = file.getValue(5);
cout << "A: " << A << endl;
for ( int i = 0; i < 10; i++)
{
cout << file.mnumbers2[i] << " ";
}
////////////////////////////////////////
fclose(file.file);
return 0;
}
Но я не захожу в данный цикл
for (IntFile::Move Iter = file.begin(); Iter != file.end(); ++Iter)
{
fread(file.mnumbers2,4,1,file.file);
cout << " I " << endl;
//cout << "Iterator: " << Iter;
}
А также чувствую, что begin() , end() работают не правильно. Люди советовали, что они обязательно должны что-то возвращать, но в другой аналогичной программе, begin() и end() ничего не возвращали. А также, operator* не работает, expecter primary... . Нужно что-то сделать static? Заранее спасибо.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей