C ++中验证IP地址

本文的目的是通过c++代码编程验证正确的IP (internet protocol)地址。IP地址是一个32位的点-小数表示法,分为从0到255的四个十进制数字段。此外,这些数字由点分隔连续。IP地址的作用是在网络中以独特的方式识别主机,以便在它们之间建立连接。

因此,为了验证从用户端输入的正确IP地址,以下算法简要介绍了如何具体实现代码序列以标识正确的IP地址;

Algorithm(算法)

START
   Step-1: 输入IP地址
   Step-2: 将IP分割成四个段并存储在一个数组中
   Step-3: 检查是否为数字
   Step-4: 使用foreach循环遍历数组列表
   Step-5: 检查其范围(小于256)和数据格式
   Step-6: 调用Main()中的validate方法
END

因此,根据算法,以下c ++拟定了用于验证IP地址的方法,其中使用了几个基本函数分别确定数字形式,范围和分割输入数据;

示例

#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 检查给定的字符串是否是数字字符串
bool chkNumber(const string& str){
   return !str.empty() &&
   (str.find_first_not_of("[0123456789]") == std::string::npos);
}
// 函数使用给定的分隔符拆分字符串str
vector<string> split(const string& str, char delim){
   auto i = 0;
   vector<string> list;
   auto pos = str.find(delim);
   while (pos != string::npos){
      list.push_back(str.substr(i, pos - i));
      i = ++pos;
      pos = str.find(delim, pos);
   }
   list.push_back(str.substr(i, str.length()));
   return list;
}
//函数验证IP地址
bool validateIP(string ip){
   //字符串拆分为标记
   vector<string> slist = split(ip, '.');
   if (slist.size() != 4)
      return false;
   for (string str : slist){
      //检查字符串是否为数字,正数和范围
      if (!chkNumber(str) || stoi(str) < 0 || stoi(str) > 255)
         return false;
   }
   return true;
}
   //在C ++中验证IP地址
int main(){
   cout<<"输入IP地址::";
   string ip;
   cin>>ip;
   if (validateIP(ip))
      cout <<endl<< "***它是一个有效的IP地址***";
   else
      cout <<endl<< "***IP地址无效***";
   return 0;
}

在使用标准c++编辑器编译上述代码后,我们会作出以下输出,以检查输入数字10.10.10.2是否正确的IP地址

输出结果

输入IP地址:: 10.10.10.2
***它是一个有效的IP地址***