zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    全局变量和局部变量
    单例模式i
    高阶函数
    闭包和内存管理
    用python 写网络爬虫--零基础
    robots.txt 文件是什么? 如何获取
    Python: NLTK几个入门函数
    nltk book的下载
    nltk 环境安装( WINDOWS 7 32位 环境下)
    遇到问题
  • 原文地址:https://www.cnblogs.com/donggongdechen/p/10238933.html
Copyright © 2011-2022 走看看