Oppure

Loading
22/08/11 18:46
jaco94++
Salve =)
Ho un problema con una funziona che verifica se la stringa immessa è un indirizzo ipv4 corretto, non trovandone una ho pensato di scriverne una funziona il fatto e che funziona come dire quasi sempre tipo 127.0.0.1 lo riconosce ma ad esempio per lui 98.8.109.255 non è valido! come posso risolvere ? ecco il codice :

    bool ipv4(string ip)
    {
short dotidx=0;
        short nbridx=0;
        bool  cmpl=false;
        string max_range="";

        for(unsigned int i=0;i<ip.size();i++)
        {
            if(ip.at(i)>='0'&&ip.at(i)<='9')
            {
                nbridx+=1;
                cmpl=true;
                max_range+=ip.at(i);
                if(max_range>"255")
                {
                    return false;
                }
                else if(nbridx>=4)
                {
                    return false;
                }
            }
            else if(ip.at(i)=='.')
            {
                cmpl=false;
                max_range.clear();
                dotidx+=1;
                nbridx=0;
            }
            else
            {
                return false;
            }
        }
        if(dotidx==3&&cmpl==true){return true;} else {return false;}
    }



Ultima modifica effettuata da jaco94++ 22/08/11 18:49
aaa
22/08/11 19:41
delta
io controllerei la riga 15

if(max_range>"255")
    return false;


a naso è meglio fare
if( itoa( max_range.c_str() ) > 255 ) //mi sembra che così si possa fare
    return false;

o comunque con una funzione che restituisca il valore "intero" contenuto in max_range.

non ho testato, ma penso che potrebbe essere quello il problema
aaa