互联网协议地址的去角符版本


简介

本教程讨论了查找互联网协议地址的去角符版本的问题。互联网协议地址或 IP 地址是连接到或使用互联网的设备的唯一数字地址。每个连接互联网的设备的 IP 地址都是唯一的。它由用句点(点)分隔的数字组成。例如 191.0.1.2。

互联网协议的去角符版本是指用其他字符替换句点(点),以使其不被视为有效的 IP 地址。为了对互联网协议地址进行去角符,我们使用 [.] 代替句点(点)。互联网协议地址被去角符,以便可以安全地以文本形式或某些代码使用,而不会违反编码规则。

在本教程中,我们将通过获取有效的 IP 地址并将其中的点(.)替换为 [] 来实现两种去角符 IP 地址的方法。

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

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

演示 1

Input = String = "192.168.1.1"
Output = 192[.]168[.]1[.]1

说明

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

演示 2

Input = String = "191.0.1.2"
Output = 191[.]0[.]1[.]2

说明

字符串形式的有效互联网协议地址为 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++ 中的问题陈述。该字符串是有效的互联网协议地址。使用循环遍历字符串,并使用 if-else 条件将字符串分隔符替换为 [.]

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

//User-defined function to find the defanged IP address
string defangIPaddress(const string& str) {
   string defangAddress;

// loop to iterate the string 
   for (char ch : str){
   
      //condition to identify the . in the string
      if (ch == '.') {
         defangAddress += "[.]";
      } else {
         defangAddress += ch;
      }
   }
   //returning the defanged string
   return defangAddress;
}

//code controller
int main() {
   string validIP = "192.168.1.1";
   
   //calling function 
   string defanged_address = defangIPaddress(validIP);
   cout << "Original IP Address: " << validIP << endl;
   cout << "Defanged IP Address: " << defanged_address << endl;
   return 0;
}

输出

Original IP Address: 192.168.1.1
Defanged IP Address: 192[.]168[.]1[.]1

示例 2

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

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

//Function for defanging the Internet Protocol Address
string defangIPaddress(const string& str) {

   // Define the regular expression stringPattern to match periods (dots)
   regex stringPattern("\.");
   
   // Define the replace string as "[.]"
   string replace = "[.]";
   
   // Use regex_replace to replace the matched periods with "[.]"
   string defangedAddress = regex_replace(str, stringPattern, replace);
   return defangedAddress;
}

//code controller
int main(){

   //Valid IP address
   string validAddress = "192.168.1.1";
   
   //calling function
   string defanged_address = defangIPaddress(validAddress);
   cout << "Original IP Address: " << validAddress << endl;
   cout << "Defanged IP Address: " << defanged_address << endl;
   return 0;
}

输出

Original IP Address: 192.168.1.1
Defanged IP Address: 192[.]168[.]1[.]1

结论

我们已经完成了本教程。在本教程中,我们开发了从有效 IP 地址查找去角符 IP 地址的方法。要对 IP 地址进行去角符,请将句点替换为 [.]。为了替换,我们使用了简单的字符串遍历方法和正则表达式方法。

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

更新于:2023年10月3日

452 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告