将字符串转换为网络地址

时间:2011-03-11 21:14:41

标签: string ip-address

我有一个Visual Studio 2008 C ++应用程序,我想将IP地址从点分四位表示法中的宽字符字符串转换为地址(类似于inet_aton);

我这样做:

DWORD StringToAddress( const std::wstring& address )
{
    BYTE a = 0, b = 0, c = 0, d = 0;
    swscanf( address.c_str(), L"%u.%u.%u.%u", &a, &b, &c, &d );
    return d << 24 | c << 16 | b << 8 | a;
}

不幸的是,当我提供类似169.254.255.255的地址时,第三个四元组出现在swscanf 0而不是255

我做错了吗?有没有好办法解决这个问题?

谢谢, PaulH

1 个答案:

答案 0 :(得分:1)

Windows有inet_addr(),但它似乎不支持UNICODE

#include <winsock2.h>

std::string address = "169.254.255.255";
unsigned long ip = inet_addr(address.c_str());