用c语言或c++编写一个程序恢复IP地址?
#include <iostream>
#include <cstring>
using namespace std;
// 把字符串转化成整数
int str_2_int(string s){
int len = s.length();
int int_s = s[0] - 48;
for(int i = 1; i < len ; i++){
int_s = 10 * int_s + (s[i] - 48);
}
return int_s;
}
int str_2_ips(string s,string *ips){
int r = 0;
for(int i = 1; i < 4; i++){
// 获取第一个ip段
string lstr = s.substr(0,i);
string rstr = s.substr(i);
if(str_2_int(lstr) > 255){
continue;
}
for(int j = 1; j < 4 && j < rstr.length(); j++){
// 第二个ip段
string lstr2 = rstr.substr(0,j);
string rstr2 = rstr.substr(j);
if(str_2_int(lstr2) > 255){
continue;
}
for(int k = 1; k < 4 && k < rstr2.length(); k++){
// 第三个ip段
string lstr3 = rstr2.substr(0,k);
// 第四个ip段
string rstr3 = rstr2.substr(k);
if(str_2_int(lstr3) > 255 || str_2_int(rstr3) > 255)
continue;
*ips = lstr+"." + lstr2 + "." + lstr3 + "." + rstr3;
ips ++;
r ++;
}
}
}
return r;
}
int main(){
string ips[100];
string s;
cout << "输入字符串:" << endl;
cin >> s;
int r = str_2_ips(s,ips);
cout << "可用IP:" << endl;
for(int i = 0; i < r; i++){
cout << ips[i] << endl;
}
return 0;
}
运行结果: