Purtroppo non conosco la multimap, e sono convinto che sarebbe più semplice, però vorrei riuscire a capire perchè non riesco a farlo in questo modo.

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

using namespace std ;

fstream input;

void anagramma(string radice, string s, int livello)
{
     char parola[30];
     string q;

     for (int i = 0; i < s.size(); i++)
     {
         string t = radice + s[i];

         if (t.size() == livello)
         {
            while(input.eof()){
            input.getline(parola, 30);
            q.assign(parola);
            if(q.compare(t)==0)
            cout << t << endl ;
                        }
         }

         anagramma(t, s.substr(0, i) +
                      s.substr(i + 1), livello);
     }
}

void calcola_anagrammi(string s)
{
     anagramma("", s, s.size());
}

int main()
{
    string my_string;
    input.open("words.italian.txt", ios::in);

    cout << "Inserire la stringa da anagrammare : ";
    cin  >> my_string;

    calcola_anagrammi(my_string);

    return 0 ;
}
Così non mi da nessun anagramma, quindi il controllo non va bene, ma in altri programmi che ho fatto questo controllo andava bene, non capisco come mai.