//comptxt.cpp
//Cette version ne traite pas encore correctement le cas de la dernière
//ligne dont juste un retour de ligne supplémentaire pourrait être différent
//
//Alternative: lire caractère par caractère (!! texte Windows ou Unix)

#include <iostream>
#include <fstream>
#include <string>
#include <cstring>

using namespace std;

class CompTxt {
 private:
   string fichier_in1;
   string fichier_in2;

 public:
   CompTxt(const char *mon_fichier_in1, const char *mon_fichier_in2);
   bool compare();
};

CompTxt::CompTxt(const char *mon_fichier_in1, const char *mon_fichier_in2) {
  fichier_in1 = mon_fichier_in1;
  fichier_in2 = mon_fichier_in2;
}

bool CompTxt::compare() {
 ifstream infile1(fichier_in1.c_str(), ios::in);
 if (!infile1) {
   cerr << "Le fichier " << fichier_in1 << " n'existe pas";
   return false;
 }

 ifstream infile2(fichier_in2.c_str(), ios::in);
 if (!infile2) {
   cerr << "Le fichier " << fichier_in2 << " n'existe pas";
   return false;
 }

 int no_ligne = 1;
 char une_ligne1[1024];
 char une_ligne2[1024];

 bool meme = true;

 for (;;) {
   //traite le cas des fin de fichiers
   //et l'un plus court que l'autre

   if (infile1.getline(une_ligne1, 1024) == 0) {
     if (infile2.getline(une_ligne2, 1024) != 0) {
       meme = false;
     }
     break;
   }
   else {
     if (infile2.getline(une_ligne2, 1024) == 0) {
       meme = false;
       break;
     }
   }

   if (strcmp(une_ligne1, une_ligne2) != 0) {
     meme = false;
     break;
   }
   no_ligne++;
 }

 infile1.close();
 infile2.close();

 if (!meme) {
   cout << fichier_in1 << " et " << fichier_in2;
   cout << " différents à la ligne " << no_ligne << endl;
   return false;
 }
 return true;
}


int main(int argc, char **argv) {
 CompTxt ma_copie("text1.txt", "text2.txt");  //plus simple pour les tests
 if (ma_copie.compare()) {
   cout << "Les deux fichiers sont identiques" << endl;
 }
}