Ho un problema riguardante queste due funzioni:

codice:
void Codifica( int esp, long long int mod )
{
	char CarCorrente;
	string buf;

	ifstream leggi(NomeFileIn);
	ofstream scrivi(NomeFileOut);

	while( (CarCorrente = leggi.get()) != EOF )
	{
		buf = llitos(CalcolaPotenza(CarCorrente, esp, mod));
		scrivi.write(buf.c_str(), sizeof(long long int));
	}
}

void Decodifica( int esp, long long int mod )
{
	long long int Corrente; /**< Variabile in cui è salvato il carattere corrente prelevato dal file*/
	string buf;

	ifstream leggi(NomeFileIn);
	ofstream scrivi(NomeFileOut);
	
	bool eof = false;
	while( !eof )
	{
		leggi.read(buf.c_str(), sizeof(long long int));

		if ( leggi.eof() )
			eof = true;
                
                Corrente = CalcolaPotenza(atoll(buf.c_str()), esp, mod);
                buf = llitos(Corrente);
                scrivi.write(Corrente.c_str(), sizeof(long long int));
	}
}
Purtroppo mi da diversi errori in compilazione.. c'è qualcosa di sbagliato nella lettura/scrittura non formattata, ma non capisco cosa

llitos, converte un long long int in una stringa
atoll, fa il contrario
CalcolaPotenza, ritorna un long long int