• c++ string 解析ip


    比如输入是192.168.80.12-15,解析成192.168.80.12、192.168.80.13、192.168.80.14、192.168.80.15;

    亦或192.168.10.10-192.168.10.12,解析成192.168.10.10、192.168.10.11、192.168.10.12

    #include <iostream>
    #include <vector>
    #include <string>
    #include <sstream>
    #include <fstream>
    
    void ReadDataFromFile(std::string& filename, std::vector<std::string>& lines_feat) {
        std::ifstream vm_info(filename.c_str());
        std::string lines;
    
        lines_feat.clear();
    
        while(!vm_info.eof()) {
            getline(vm_info, lines);
                if(lines.empty())
                    break;
    
                lines_feat.push_back(lines);
        }
    }
    
    std::vector<std::string> split(const std::string& s, char& delimiter) {
        std::vector<std::string> tokens;
        std::string token;
        std::istringstream tokenStream(s);
    
        while(std::getline(tokenStream, token, delimiter)) {
            tokens.push_back(token);
        }
        return tokens;
    }
    
    int stringtoint(const std::string& s) {
        std::istringstream iss(s);
    
        int num;
    
        return iss>>num?num:0;
    }
    
    /*处理IP格式为:192.168.125.10-192.168.125.100*/
    void printip2(const std::string& s) {
        std::vector<std::string> temp, ip_segment, ip_end_v;
    
        temp=split(s, '-');
    
        ip_segment=split(temp.front(), '.');
        ip_end_v=split(temp.back(), '.');
    
        std::string ip_start=ip_segment.back(), ip_end=ip_end_v.back();
        int start=stringtoint(ip_start);
        int end=stringtoint(ip_end);
    
        for(size_t i=start; i<=end; ++i) {
            std::cout<<ip_segment[0]<<"."<<ip_segment[1]<<"."<<ip_segment[2]<<"."<<i<<"
    ";
        }
    
    }
    
    /*处理IP格式为:192.168.125.10-100*/
    void printip(const std::string& s) {
        std::vector<std::string> temp, ip_segment;
    
        temp=split(s, '-');
        ip_segment=split(temp.front(), '.');
    
        std::string ip_start=ip_segment.back(), ip_end=temp.back();
        int start=stringtoint(ip_start);
        int end=stringtoint(ip_end);
    
        for(size_t i=start;i<=end;++i) {
            std::cout<<ip_segment[0]<<"."<<ip_segment[1]<<"."<<ip_segment[2]<<"."<<i<<"
    ";
        }
    
    }
    
    int main() {
        std::string file_path("vm.data");
        std::vector<std::string> ip_vec;
    
        ReadDataFromFile(file_path, ip_vec);
        for(std::vector<std::string>::const_iterator it=ip_vec.begin();it!=ip_vec.end();++it) {
            printip2(*it);
        }
    
        return 0;
    }
  • 相关阅读:
    关于rollaxis与swapaxes的使用
    三角函数诱导公式、恒等变换公式
    二阶导数为什么写成 d2y/dx2 的形式
    哔哩哔哩批量合并缓存音视频利用python3+ffmpeg
    机器视觉光源选型(一)-光源颜色选择
    机器视觉光源选型(四)-环形光源
    机器视觉光源选型(三)-同轴光源
    机器视觉光源选型(二)-低角度环形光源
    机器视觉光源选型(六)-不同照明技术对比
    机器视觉光源选型(五)-圆顶光源
  • 原文地址:https://www.cnblogs.com/donggongdechen/p/10238933.html
Copyright © 2020-2023  润新知