How do you validate that a string is a valid IPv4 address in C++?

前端 未结 17 2062
悲哀的现实
悲哀的现实 2020-12-04 23:21

I don\'t need to validate that the IP address is reachable or anything like that. I just want to validate that the string is in dotted-quad (xxx.xxx.xxx.xxx) IPv4 format, w

17条回答
  •  南方客
    南方客 (楼主)
    2020-12-05 00:00

    The solution that I settled on was:

    #include 
    // ...
    bool Config::validateIpAddress(const string &ipAddress)
    {
        struct sockaddr_in sa;
        int result = inet_pton(AF_INET, ipAddress.c_str(), &(sa.sin_addr));
        return result != 0;
    }
    

    This works for most cases that were mentioned in other answers. It doesn't recognize IP addresses with octal or hex formatting, but that's acceptable for my application.

提交回复
热议问题