allora
io ho fatto così
per esempio...
mi si blocca al cin.getline diciamo il compiler mi segna quella riga evidenziata di rosso, cosa che prima di cambiare da char a string i vettori di nome e cognome non succedeva ora invece succede

il codice:

codice:
#include <cstring>
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n_stud,scelta,j;
    string temp;
    struct studente
    {
           string nome[25],cognome[25];
           char corso[11];
           int voto,lode,anni_iscr;
    };
    cout<<"inserisci il numero di studenti neolaureati\n";
    cin>>n_stud;
    studente tot_stud[n_stud];
    cout<<"per inserire i dati di tutti i "<<n_stud<<" studenti premere: 1\n";
    cout<<"per mostrare tutti gli studenti in ordine alfabetico rispetto al cognome premere: 2\n";
    cout<<"per ricercare e mostrare i migliori studenti premere: 3\n";
    cout<<"per mostrare gli studenti che hanno avuto 110 o 110 e lode premere: 4\n";
    cout<<"per mostrare la media del corso di laurea premere: 5\n";
    cout<<"per ordinare in maniera decrescente rispetto al voto ogni corso di laurea premere: 6\n";
    cout<<"per uscire dal programma premere: 0\n";
    cin>>scelta;
    cin.ignore();
    do{
    switch(scelta)
    {
                  case 1:              
    for(int i=0;i<n_stud;i++)
    {        
    cout<<"inserisci il cognome dello studente\n";
    cin.getline(tot_stud[i].cognome,25);
    cout<<"inserisci il nome dello studente\n";
    cin.getline(tot_stud[i].nome,25);
    cout<<"inserisci il corso a cui e' iscritto (informatica,elettronica,civile,meccanica,elettrica,gestionale)\n";
    cin>>tot_stud[i].corso;
    cout<<"inserisci il suo voto di laurea (numero intero)\n";
    cin>>tot_stud[i].voto;
    cout<<"digita 1 se lo studente ha ricevuto una lode, digita 0 se non ne ha ricevuta\n";
    cin>>tot_stud[i].lode;
    if(tot_stud[i].lode==1)
    { 
                            cout<<"lo studente ha ricevuto una lode\n"; 
    }
    else 
    { 
         cout<<"lo studente non ha ricevuto nessuna lode\n"; 
    }
    cout<<"indica in quanti anni lo studente ha conseguito la laurea\n";
    cin>>tot_stud[i].anni_iscr;
    cin.ignore();
    }
    break;
    case 2:
         for(int i=0;i<n_stud-1;i++)
         {
         j=i+1;
         do
         {
         if(tot_stud[i].cognome<tot_stud[j].cognome)
         {
         temp=tot_stud[i].cognome;
         strcpy(tot_stud[i].cognome,tot_stud[j].cognome);
         tot_stud[j].cognome=temp;
         }
         j=j+1;
         }while(j<n_stud);
         }
         cout<<"iscritti ordinati per cognome: \n";
         for(int i=0;i<n_stud;i++)
         {
         cout<<tot_stud[i].cognome<<"\n";
         }
         break;
}}while(scelta!=0); 
    system("pause");
    return 0;    
}