#include  using namespace std; struct Sector {  int16_t floor, ceil;  char floortex[8], ceiltex[8];  int16_t light, special, tag;  void print(int idx, int diff)  {  string ftex(floortex, find(floortex, floortex+8, '\0'));  string ctex(ceiltex, find(ceiltex, ceiltex+8, '\0'));  int w = 8;   cout << left << setfill(' ');   if (idx > 0) cout << " idx " << setw(w) << idx;  else cout << " " << setw(w) << "=";  if (!diff || (diff & 0b10)) cout << " flr " << setw(w) << floor;  else cout << " " << setw(w) << "=";  if (!diff || (diff & 0b100)) cout << " cei " << setw(w) << ceil;  else cout << " " << setw(w) << "=";  if (!diff || (diff & 0b1000)) cout << " ftx " << setw(w) << ftex;  else cout << " " << setw(w) << "=";  if (!diff || (diff & 0b10000)) cout << " ctx " << setw(w) << ctex;  else cout << " " << setw(w) << "=";  if (!diff || (diff & 0b100000)) cout << " lig " << setw(w) << light;  else cout << " " << setw(w) << "=";  if (!diff || (diff & 0b1000000)) cout << " spc " << setw(w) << special;  else cout << " " << setw(w) << "=";  if (!diff || (diff & 0b10000000)) cout << " tag " << setw(w) << tag;  else cout << " " << setw(w) << "=";   cout << "\n";  }  int compare(Sector &other)  {  int diff = 0;  if (floor != other.floor) diff |= 0b10;  if (ceil != other.ceil) diff |= 0b100;  if (strcmp(floortex, other.floortex)) diff |= 0b1000;  if (strcmp(ceiltex, other.ceiltex)) diff |= 0b10000;  if (light != other.light) diff |= 0b100000;  if (special != other.special) diff |= 0b1000000;  if (tag != other.tag) diff |= 0b10000000;  return diff;  } } sectorA, sectorB; int main(int argc, char** argv) {  if (argc < 3) { std::cout << "usage: " << argv[0] << " SECTORS1.lmp SECTORS2.lmp\n"; return 1; }  ifstream fileA(argv[1]), fileB(argv[2]);  bool endA = false, endB = false;  for (int i = 0; !(endA && endB); ++i)  {  if (fileA.peek() == EOF) endA = true;  else fileA.read((char*)§orA, sizeof(Sector));  if (fileB.peek() == EOF) endB = true;  else fileB.read((char*)§orB, sizeof(Sector));  if (endB && !endA) { cout << "--- "; sectorA.print(i, 0); }  else if (endA && !endB) { cout << "+++ "; sectorB.print(i, 0); }  else {  int diff = sectorA.compare(sectorB);  if (diff) {  cout << "\n";  cout << "<<< "; sectorA.print(-1, diff);  cout << ">>> "; sectorB.print(i, 0);  cout << "\n";  }  }  }  return 0; }