Pasar de binario a hexadecimal en C++

Solo para números enteros.
Ejemplo de uso: binarioHex("100100"); y te devuelve un string con el numero en hexadecimal



string ALU::hexadecimal(string num)
{
    //pasa cada 4 dígitos de binario a uno en hexadecimal
    if(num=="0000"){
        return "0";
    }else if(num=="0001"){
        return "1";
    }else if(num=="0010"){
        return "2";
    }else if(num=="0011"){
        return "3";
    }else if(num=="0100"){
        return "4";
    }else if(num=="0101"){
        return "5";
    }else if(num=="0110"){
        return "6";
    }else if(num=="0111"){
        return "7";
    }else if(num=="1000"){
        return "8";
    }else if(num=="1001"){
        return "9";
    }else if(num=="1010"){
        return "A";
    }else if(num=="1011"){
        return "B";
    }else if(num=="1100"){
        return "C";
    }else if(num=="1101"){
        return "D";
    }else if(num=="1110"){
        return "E";
    }else if(num=="1111"){
        return "F";
    }
       return 0;
}

//como a este metodo no se le pueden pasaar numeros decimales se separa la parte decimal de la entera y se las pasa al metodo por separado
string ALU::binarioHex(string binario)
{
    //coges el numero en binario
    string b = binario+"";

    string sol = "";//solucion

    //separa el numero de 4en4 dígitos
    int numeroSeparaciones = binario.length()/4;
    if(binario.length()%4>0){//si el numero no es exacto añade una separacion
        numeroSeparaciones++;

    }
    for (int var = binario.length(); var < numeroSeparaciones*4; ++var) {//si el numero no es esacto añade 0 a la derecha
        b="0"+b;
    }
    for (int var = 0; var < numeroSeparaciones; ++var) {//coge los digitos binarios de 4 en 4 y llamando al metodo anterior, los pasa a hexadecimal
        sol+=hexadecimal(b.substr((var*4),4));
    }
    return sol;
}