如何将不带“:”的字符串转换为const uchar * addr?

时间:2019-08-03 21:05:59

标签: c++ dns

我必须将像这样的字符串“ FE80:0000:0000:0000:0000:0000:0000:0000:0012”转换为const uchar * addr,不带“:”。

我尝试了不带“:”的分割字符串,并像矢量一样放置......

vector<string> addressIPv6(string serverIP)
{
    istringstream iss(serverIP);
    std::vector<string> tokens;
    std::string token;

    while (std::getline(iss, token, ':')) {
        if (!token.empty())
            tokens.push_back(token);
    }
    return tokens;
}

谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

要从字符串中删除设置的字符,可以使用STL算法擦除和删除

std::erase(std::remove(serverIP.begin(), serverIP.end(), ':'), serverIP.end());

然后,您可以使用serverIP.c_str()获取const char *,并在需要时将其副本转换为未签名的char *
https://en.cppreference.com/w/cpp/string/basic_string/c_str