void BlocksExpand(char *first, char *second,std::string &out)
{
    char buf[16] = "";
    unsigned char a, b, c, d,A,B,C,D;
    strcpy(buf, first);
    strtok(buf, ".");
    a=atoi(buf);
    first += strlen(buf)+1;
    strcpy(buf, first);
    strtok(buf, ".");
    b = atoi(buf);
    first += strlen(buf) + 1;
    strcpy(buf, first);
    strtok(buf, ".");
    c = atoi(buf);
    first += strlen(buf) + 1;
    d = atoi(first);
    strcpy(buf, second);
    strtok(buf, ".");
    A = atoi(buf);
    second += strlen(buf) + 1;
    strcpy(buf, second);
    strtok(buf, ".");
    B = atoi(buf);
    second += strlen(buf) + 1;
    strcpy(buf, second);
    strtok(buf, ".");
    C = atoi(buf);
    second += strlen(buf) + 1;
    D = atoi(second);
    //printf("%d.%d.%d.%d\n%d.%d.%d.%d", a, b, c, d,A,B,C,D);
    for (int bi = b; bi < (B + 1); bi++)
    {
        for (int ci = c; ci < (C + 1); ci++)
        {
            for (int di = d; di < (D + 1); di++)
            {
                memset(buf, 0, 16);
                printf("%d.%d.%d.%d\n", a,bi,ci,di);
                wsprintfA(buf, "%d.%d.%d.%d;", a, bi, ci, di);
                out = out + std::string(buf);
            }
        }
    }
    //printf("total: %d", total);
}
середа розробки VS 2015, тому мабуть там не тільки є С++11, а й щє С++14 Але таки конкатенація стрингу через оператор "+" занадто повільна (((