私は100を超えるIPアドレス(ドット付き10進数.169.23.43.12)を含むファイルを持っています。今私はすべてのIPアドレスを読み、昇順でソートする必要があります。まず、すべてのIPアドレスを等価整数に変換しようとしました.IPアドレスを変換するためのC++関数を作成しましたが、大きなIPアドレス(255.250.120.100など)では機能しませんでした。私はinet_aton()とinet_ntoa()を使ってみました。しかし、これらの2つを使用して、私は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()を使った後、どのように並べ替えることができますか?あなたはそれらを並べ替えるための手順を知っていますか? –
符号なし整数を使用しましたか?符号付き整数を使用すると、経験した動作が発生する可能性があります。 –