網際網路協議地址的去角符版本


簡介

本教程討論了查詢網際網路協議地址的去角符版本的問題。網際網路協議地址或 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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告