互联网协议地址的去重版本

data structurec++server side programmingprogramming

简介

本教程处理查找互联网协议地址的去重版本的问题。互联网协议地址或 IP 地址是连接到互联网或使用互联网的设备的单独数字地址。它对于每个连接到互联网的设备都是唯一的。它由用句点 (dot) 分隔的数字组成。例如 191.0.1.2。

互联网协议的去重版本意味着用其他字符替换句点 (dot.),这样它就不会被视为有效的 IP 地址。为了简化 Internet 协议地址,我们使用 [.] 代替句点 (dot .)。简化 Internet 协议地址是为了可以安全地以文本形式或某些代码使用,而不会违反编码规则。

在本教程中,通过获取有效的 IP 地址并将点 (.) 替换为 [],实现两种简化 IP 地址的方法。

  • 通过遍历字符串将点 (.) 替换为 []。

  • 使用正则表达式 - 正则表达式或 regex 是一种字符串匹配工具,用于将字符串与某些字符序列进行匹配。

演示 1

输入 = 字符串 = "192.168.1.1"
输出 = 192[.]168[.]1[.]1

解释

以字符串形式表示的有效 Internet 协议地址为 192.168.1.1。分隔符/句点(点 .)被替换为 [.]。去角后的 IP 地址为 192[.]168[.]1[.]1

演示 2

输入 = 字符串 = "191.0.1.2"
输出 = 191[.]0[.]1[.]2

解释

以字符串形式表示的有效 Internet 协议地址为 191.0.1.2,句点(点 .)被替换为 [.]。被解除锁定的 IP 地址是 191[.]0[.]1[.]2

C++ 库函数

regex_replace() − 它是正则表达式的预定义函数。它在 <regex> 头文件中定义。它用替换表达式替换匹配的模式。它需要 3 个参数:要转换的字符串、正则模式和替换字符串。

语法

regex_replace(str, pattern, replacement);

算法

  • 使用有效的 IP 地址初始化字符串。

  • 使用"for"循环遍历字符串的字符。

  • 使用 if-else 条件将 (.) 替换为 [.]

  • 重复步骤 3,直到循环到达字符串末尾。

  • 打印去尾的 IP 地址。

示例 1

通过遍历字符串,使用 C++ 实现本教程中的问题陈述。该字符串是有效的 Internet 协议地址。使用循环遍历字符串,并使用 if-else 条件将字符串分隔符替换为 [.]

#include <iostream>
#include <string>
using namespace std;

//用户定义函数查找去尾 IP 地址
string defangIPaddress(const string& str) {
       string defangAddress;
    
    // 循环迭代字符串
    for (char ch : str){
    
        //条件以识别字符串中的 .
        if (ch == '.') {
            defangAddress += "[.]";
        } else {
            defangAddress += ch;
        }
    }
    //返回去角后的字符串
    return defangAddress;
}

//代码控制器
int main() {
    string validIP = "192.168.1.1";
    
    //调用函数
    string defanged_address = defangIPaddress(validIP);
    cout << "原始 IP 地址:" << validIP << endl;
    cout << "去角后的 IP 地址:" << defanged_address << endl;
    return 0;
}

输出

原始 IP 地址:192.168.1.1
去掉 IP 地址:192[.]168[.]1[.]1

示例 2

使用正则表达式强大的字符串匹配概念,用 C++ 实现了本教程的问题陈述。它用于匹配字符串中的某些模式。它很容易使用。

#include <iostream>
#include <regex>
#include <string>
using namespace std;

// 去除 Internet 协议地址的函数
string defangIPaddress(const string& str) {

    // 定义正则表达式 stringPattern 以匹配句点(点)
    regex stringPattern("\.");
    
    // 将替换字符串定义为"[.]"
    string replace = "[.]";
    
    // 使用 regex_replace 将匹配的句点替换为"[.]"
    string defangedAddress = regex_replace(str, stringPattern, replace);
    return defangedAddress;
}

//代码控制器
int main(){

    // 有效 IP 地址
    string validAddress = "192.168.1.1";
    
    // 调用函数
    string defanged_address = defangIPaddress(validAddress);
    cout << "原始 IP 地址:" << validAddress << endl;
    cout << "去掉 IP 地址:" << defanged_address << endl;
    return 0;
}

输出

原始 IP 地址:192.168.1.1
去掉 IP 地址:192[.]168[.]1[.]1

结论

本教程到此结束。在本教程中,我们开发了从有效 IP 地址中查找去掉 IP 地址的方法。要去掉 IP 地址的句点,请用 [.] 替换。为了进行替换,我们使用了一种简单的字符串遍历方法和正则表达式方法。

正则表达式是用于查找字符串中是否存在模式的字符串匹配工具。它具有各种预定义函数。通过一些示例演示了问题陈述。


相关文章