hai ragione infatti modificando la condizione di terminazione ora va perfettamente. Quindi a questo punto mi chiedo perchè se come dici tu la dichiarazione dell'array di stringhe non è esatta,il programma va comunque? ho provato anche ad aggiungere nel codice due cout per dire quali stringhe sono uguali e diverse verificando ulteriormente che tutto vada liscio e infatti così è.Ah come faccio ad evitare ripetizioni nelle comparazioni?

codice:
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <fstream>


using namespace std;


int main()
{
   fstream file;
   file.open ("dati.txt",ios::in);
   if (!file)
   cout << "Errore Apertura File";


   int n = 0;
   char contarighe[10];


	while (!file.eof())
	{
	    file.getline (contarighe,10);
	    n++;


	}


   file.seekg(0);
   cout << "La lunghezza della lista e': " << n << "\n\n";








   string *vet = new string [n];






  //Letture file
    for (int i=0;i<n;i++)
    file >> vet[i];






   //Stampa file
   for (int i=0;i<n;i++)
    cout << vet[i] << "\n";


cout << "\n\n";
for (int i=0;i<n;i++)
{
    if(vet[i]==vet[n-i-1])
    {
    cout << "la stringa " << i << " e' uguale alla stringa " << n-i-1 << "\n\n";
    }
    else
    cout << "la stringa " << i << " e' diversa dalla stringa " << n-i-1 << "\n\n";
}


}