07_

来源:互联网 发布:java中的foreach循环 编辑:程序博客网 时间:2024/06/05 16:25
/*从字符串中获取尽可能多的ipv4地址*/void getIP( char *ip ) {    if ( (nullptr==ip)||(strlen(ip)<4)||(strlen(ip)>12) ) {        return;    }    char *s = ip;    long long sum = 0;    int i = 0;    char *dest = new char[strlen(ip) + 4];    char *temp = dest;    vector<char*> v;    for (int i1 = 1; i1 <= 3; ++i1) {        i = 0;        sum = 0;        temp = dest + 0;        s = ip+0;        while ( (i<i1)&&(*s !='\0') ) {            sum = sum * 10 + (*s - '0');            ++i;            *temp++ = *s++;        }        if (sum > 255) {            break;        }        else {            *temp++ = '.';            for (int i2 = 1; i2 <= 3; ++i2) {                i = 0;                sum = 0;                temp = dest + i1+1;                s = ip + i1;                while ((i<i2) && (*s != '\0')) {                    sum = sum * 10 + (*s - '0');                    ++i;                    *temp++ = *s++;                }                if (sum > 255) {                    break;                }                else {                    *temp++ = '.';                    for (int i3 = 1; i3 <= 3; ++i3) {                        i = 0;                        sum = 0;                        temp = dest + i2+i1+2;                        s = ip + i2+i1;                        while ((i<i3) && (*s != '\0')) {                            sum = sum * 10 + (*s - '0');                            ++i;                            *temp++ = *s++;                        }                        if (sum > 255) {                            break;                        }                        else {                            *temp++ = '.';                            sum = 0;                            while ( *s != '\0' ) {                                sum = sum * 10 + ( *s-'0');                                *temp++ = *s++;                            }                            *temp = '\0';                            if ( sum>255 ) {                                continue;                            }                            else {                                char *chen = new char[strlen(ip) + 4];                                strcpy( chen , dest );                                v.push_back(chen);                            }                        }                    }                }            }        }    }    for (auto b = v.begin(); b != v.end();++b ) {        cout << *b << endl;    }}
原创粉丝点击