如果你不想使用std::getline
函数,你可以使用循环和索引来手动解析字符串。下面是一个示例代码:
#include <iostream>
#include <string>
bool checkIPAddress(const std::string& ipAddress) {
int count = 0;
int startIndex = 0;
for (int i = 0; i <= ipAddress.length(); i++) {
if (i == ipAddress.length() || ipAddress[i] == '.') {
std::string segment = ipAddress.substr(startIndex, i - startIndex);
if (segment.empty() || segment.length() > 3)
return false;
for (char c : segment) {
if (!std::isdigit(c))
return false;
}
int num = std::stoi(segment);
if (num < 0 || num > 255)
return false;
count++;
startIndex = i + 1;
}
}
return (count == 4);
}
int main() {
std::string ipAddress;
std::cout << "请输入IP地址:";
std::cin >> ipAddress;
if (checkIPAddress(ipAddress)) {
std::cout << "IP地址格式正确" << std::endl;
} else {
std::cout << "IP地址格式错误" << std::endl;
}
return 0;
}
该示例使用循环遍历输入的字符串,找到每个子段的起始和结束位置,并根据索引获取子段。然后,它对每个子段执行类似的检查:非空、长度不超过3、只包含数字字符、数字范围在0到255之间。最后,它计算子段的数量,并检查是否有4个子段。
这是一个简单的示例,适用于校验IPv4地址的格式。如果需要支持更多类型的IP地址(如IPv6),你可能需要实现更复杂的解析和校验逻辑。
内容由零声教学AI助手提供,问题来源于学员提问