我有一個包含超過100個IP地址的文件(點分十進制例如169.23.43.12)。現在我需要讀取所有的IP地址並按升序排序。爲此,我首先嚐試將所有IP地址轉換爲其等效的整數。我創建了一個C++函數來轉換IP地址,但它不適用於大型IP地址,例如255.250.120.100。我試圖使用inet_aton()和inet_ntoa()。但使用這兩個,我無法排序IP地址。所以,請給我一個想法,將IP地址轉換爲可以排序的表單。下面是我嘗試對ip地址進行分類的一些代碼,但沒有奏效。將IP地址轉換爲單個號碼
struct sockaddr_in antelope [2]; char * some_addr;
inet_aton("60.0.0.4", &antelope[0].sin_addr); // store IP in antelope
inet_aton("10.0.0.2", &antelope[1].sin_addr); // store IP in antelope
std::sort(antelope,antelope+2);
cout<<inet_ntoa(antelope[0].sin_addr)<<endl;
cout<<inet_ntoa(antelope[1].sin_addr)<<endl;
什麼不起作用?什麼是錯誤? std :: sort不知道如何訂購sockaddr_in結構。 –
std :: sort給出了一些錯誤。所以,在使用inet_aton()之後,我該如何對它們進行排序呢?你知道有什麼程序來分類嗎? –
你使用了無符號整數嗎?如果您使用帶符號整數,則您遇到的行爲可能會發生。 –