ZBLOG

不使用std::getline

如果你不想使用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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=2714

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?