7 ответов:
использовать
inet_ntop()иinet_pton()Если вам это нужно наоборот. Не используйтеinet_ntoa(), inet_aton()и похоже, что они устарели и не поддерживают ipv6.вот хороший руководство С довольно большим количеством примеров.
// IPv4 demo of inet_ntop() and inet_pton() struct sockaddr_in sa; char str[INET_ADDRSTRLEN]; // store this IP address in sa: inet_pton(AF_INET, "192.0.2.33", &(sa.sin_addr)); // now get it back and print it inet_ntop(AF_INET, &(sa.sin_addr), str, INET_ADDRSTRLEN); printf("%s\n", str); // prints "192.0.2.33"
Я не уверен, что правильно понял вопрос.
в любом случае, вы ищете это:
std::string ip ="192.168.1.54"; std::stringstream s(ip); int a,b,c,d; //to store the 4 ints char ch; //to temporarily store the '.' s >> a >> ch >> b >> ch >> c >> ch >> d; std::cout << a << " " << b << " " << c << " "<< d;192 168 1 54
мне удалось преобразовать строку в DWORD и обратно с помощью этого кода:
char strAddr[] = "127.0.0.1" DWORD ip = inet_addr(strAddr); // ip contains 16777343 [0x0100007f in hex] struct in_addr paddr; paddr.S_un.S_addr = ip; char *strAdd2 = inet_ntoa(paddr); // strAdd2 contains the same string as strAddЯ работаю в проекте обслуживания старого кода MFC, поэтому преобразование устаревших вызовов функций не применимо.
inet_ntoa()преобразованиеin_addrв строку:функция inet_ntoa преобразует (Ipv4) сетевой адрес интернета в строка ASCII в интернет-стандарте десятичном формате.
inet_addr()отменить заданиефункция inet_addr преобразует a строка, содержащая IPv4 десятичный адрес на правильный адрес для структура
PS Это первый результат гугля "in_addr to string"!
чтобы преобразовать строку в in-addr:
in_addr maskAddr; inet_aton(netMaskStr, &maskAddr);конвертировать формате в строку:
char saddr[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &inaddr, saddr, INET_ADDRSTRLEN);
в этом примере показано, как преобразовать строку в ip и наоборот:
struct sockaddr_in sa; char ip_saver[INET_ADDRSTRLEN]; // store this IP address in sa: inet_pton(AF_INET, "192.0.1.10", &(sa.sin_addr)); // now get it back sprintf(ip_saver, "%s", sa.sin_addr)); // prints "192.0.2.10" printf("%s\n", ip_saver);
третий
inet_ptonпараметр является указателем наin_addrструктура. После успешногоinet_ptonвызовin_addrструктура будет заполнена адресной информацией. СтруктураS_addrполе содержит IP-адрес в сетевом порядке байтов (обратный порядок).
Comments