C++ 解析和比较C+中的IP地址+;

C++ 解析和比较C+中的IP地址+;,c++,string,parsing,comparison,ip-address,C++,String,Parsing,Comparison,Ip Address,我正在尝试编写一个实用程序,它可以执行以下操作: 读取文件以解析IP地址 将从文件解析的IP地址与主列表进行比较,以查找缺少的IP地址 输出丢失的IP地址 实施第2项和第3项的好方法是什么?到目前为止,我正在执行以下操作,以获取已从文件解析的IP地址总数: if (strstr (line, "IP_Address=128.10.")) { fprintf(ofp, "%s\n", line); ip_addresses++; // counter for IP addresse

我正在尝试编写一个实用程序,它可以执行以下操作:

  • 读取文件以解析IP地址
  • 将从文件解析的IP地址与主列表进行比较,以查找缺少的IP地址
  • 输出丢失的IP地址
  • 实施第2项和第3项的好方法是什么?到目前为止,我正在执行以下操作,以获取已从文件解析的IP地址总数:

    if (strstr (line, "IP_Address=128.10.")) {
        fprintf(ofp, "%s\n", line);
        ip_addresses++; // counter for IP addresses starting with 128.10
    }
    

    我应该如何将解析后的IP地址与主列表进行比较,以及在检查IP列表时如何检测缺失的IP地址

    读取时,我会将每个IP地址转换为32位无符号整数(至少假设是IPv4,似乎是这样)


    然后我将它们插入到向量中并对它们进行排序。对主列表执行相同操作,并使用
    std::set_difference
    查找差异。

    首先,将地址转换为无符号整数。假设将解析后的地址保留为int数组,代码可能如下所示:

    //  If ip is 195.102.45.203, then unsigned int IP = {195, 102, 45, 203};
    unsigned int identifier = 0;
    identifier = ((IP[0]*255 + IP[1])*255 + IP[2])*255 + IP[3];
    
    将所有标识符插入某个向量,对其进行排序,并对主列表中的地址执行相同操作。然后检查是否有丢失的