C++ 判断一个IP地址是否正确的程序
时间: 2023-12-12 09:05:38 浏览: 44
可以使用正则表达式判断一个IP地址是否正确,以下是一个示例程序:
```c++
#include <iostream>
#include <regex>
using namespace std;
int main() {
string ip;
regex pattern("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$");
cout << "请输入IP地址:";
cin >> ip;
if (regex_match(ip, pattern)) {
cout << "IP地址正确!" << endl;
} else {
cout << "IP地址不正确!" << endl;
}
return 0;
}
```
该程序使用了正则表达式 `^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$` 来匹配输入的IP地址,其中 `\d{1,3}` 表示匹配1到3位数字,`\.` 表示匹配点号。如果匹配成功,则判断IP地址正确。
相关问题
判断字符串是不是指定的IP类型,C++
可以使用正则表达式来判断一个字符串是否为指定的IP类型。下面是一个示例代码:
```c++
#include <iostream>
#include <regex>
using namespace std;
bool isIPv4(string str) {
regex pattern("^\\d{1,3}(\\.\\d{1,3}){3}$");
return regex_match(str, pattern);
}
bool isIPv6(string str) {
regex pattern("^[0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4}){7}$");
return regex_match(str, pattern);
}
int main() {
string ip = "192.168.0.1";
if (isIPv4(ip)) {
cout << "IPv4 address" << endl;
} else if (isIPv6(ip)) {
cout << "IPv6 address" << endl;
} else {
cout << "Invalid IP address" << endl;
}
return 0;
}
```
该程序使用正则表达式来匹配IPv4和IPv6地址。`isIPv4`函数使用IPv4地址的正则表达式,`isIPv6`函数使用IPv6地址的正则表达式。如果字符串匹配成功,则返回`true`,否则返回`false`。在`main`函数中,我们输入一个IP地址并使用`if-else`语句来判断它是IPv4地址还是IPv6地址。
用C语言或者C++写一个判断IPV4是多少位
以下是使用C语言的示例代码,可以判断给定的IP地址是多少位的IPv4地址:
```c
#include <stdio.h>
#include <string.h>
int main() {
char ip[16];
int len, count = 0;
printf("请输入一个IP地址: ");
scanf("%s", ip);
len = strlen(ip);
for (int i = 0; i < len; i++) {
if (ip[i] == '.') {
count++;
}
}
if (count == 3) {
printf("这是一个32位的IPv4地址\n");
} else {
printf("这不是一个32位的IPv4地址\n");
}
return 0;
}
```
该程序将IP地址存储在一个字符数组中,并通过计算其中的句点数量来确定它是否是32位的IPv4地址。如果IP地址中有三个句点,则认为它是32位的IPv4地址。