Ho provato a fare un programma penso simile a come dicevi tu MItaly,vedi se è giusto.
In poche parole ho semplicemente predisposto un array dinamico di una certa lunghezza N,se poi nel file è presente un array di lunghezza minore tutto bene e lo stampa altrimenti entra nell'if e ti avvisa che il file è più grande della dimensione che hai inserito,a quel punto incrementa N finchè non diventa uguale a riemp e a quel punto stampa l'array

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


using namespace std;


int main ()
{
	int n;
	int *vet;
	
	cout << "inserisci la dimensione ";
	cin >> n;
	vet = new int [n];
	
	
	fstream miofile;
	miofile.open ("dati.txt",ios::in);
	
	int riemp = 0;
	while (!miofile.eof())
	{
		miofile >> vet[riemp++];
	}
	
	if (riemp>n)
	{
	cout << "attentione il file e' troppo grande\n\n";	
	while (riemp>n)
	{
	  n = n + 1;	
	}
	cout << "la dimensione del file e': " << n << "\n\n";
	for (int i=0;i<riemp; i++)
      cout << vet[i];
	}
	
	
    else 
    {
      for (int i=0;i<riemp; i++)
      cout << vet[i];	
    }


  


cout << "\n\n";
   system("pause");	
}