Advertisement
Guest User

Untitled

a guest
Jun 4th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.61 KB | None | 0 0
  1.  
  2. template <int size>
  3. struct FileBuffer {
  4.     char buffer[size];
  5.     FILE *file;
  6.    
  7.     int offset;
  8.    
  9.     FileBuffer (const char *fileName) {
  10.         file = fopen(fileName, "r");
  11.         offset = -1;
  12.     }
  13.    
  14.     ~FileBuffer() {
  15.         fclose(file);
  16.     }
  17.    
  18.     void load(int offset) {
  19.         fseek(file, offset, 0);
  20.         fread(buffer, 1, size, file);
  21.         this->offset = offset;
  22.     }
  23.    
  24.     char &operator[](int pos) {
  25.         if (offset == -1 || !(pos > offset && pos - offset < size)) {
  26.             load(pos);
  27.         }
  28.         return buffer[pos - offset];
  29.     }
  30.    
  31. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement