プロが教える店舗&オフィスのセキュリティ対策術

表のような,ホスト名とIPアドレスの対応表を作りたい。これを std::map を使って実現してください。
ホスト名からIPアドレスを引く機能,またその逆の,IPアドレスからホスト名を引く機能を実装してください。どちらも関数になっていることが望ましいです。
※なお,存在しないIPアドレスや存在しないホスト名を指定したときの挙動は実装しなくて構いません。
だれか詳しい方教えていただけませんか

「このプログラミング誰か教えてくれませんか」の質問画像

質問者からの補足コメント

  • うーん・・・

    ありがとうございます。
    実行結果が

    google | 216.58.197.164
    sit | 202.55.137.80
    yahoo | 182.22.16.251
    あなたのホスト名は? //ここに入力 //yahoo
    yahooのIPアドレスは182.22.16.251です。
    といった実行結果を出したいのですがどうしたらいいでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2022/04/30 19:19
  • うーん・・・

    215.58.197.164と入力したら
    google と出すにはどこを直せばいいでしょうか?

    No.4の回答に寄せられた補足コメントです。 補足日時:2022/04/30 22:13

A 回答 (4件)

#include <iostream>


#include <map>
#include <string>

std::map<std::string, std::string> database ={
             {"google", "216.58.197.164"},
             {"sit", "202.55.137.80"},
             {"yahoo", "182.22.16.251"},
};

std::string host2ip(std::string arg,
      std::map<std::string, std::string> data) {
 return data.at(arg);
}

std::string ip2host(std::string arg,
      std::map<std::string, std::string> data) {
 std::map<std::string, std::string> rdata;
 for (auto p: data) {
  rdata[p.second] = p.first;
 }
 return rdata.at(arg);
}

int main() {
 std::string s;
 while (true) {
  std::cout << "> ";
  std::cin >> s;
  if (s == "quit") {
   break;
  } else if (s == "i2h") {
   std::cout << ">> ";
   std::cin >> s;
   std::cout << ip2host(s, database) << std::endl;
  } else if (s == "h2i") {
   std::cout << ">> ";
   std :: cin >> s;
   std::cout << host2ip(s, database) << std::endl;
  } else {
   continue;
  }
 }
}
この回答への補足あり
    • good
    • 0

> 215.58.197.164と入力したら


> google と出すにはどこを直せばいいでしょうか?

それは #3 のコード。
「このプログラミング誰か教えてくれませんか」の回答画像5
    • good
    • 0

#include <iostream>


#include <map>
#include <string>

std::map<std::string, std::string> data = {
                   {"google", "215.58.197.164"},
                   {"sit", "202.55.137.80"},
                   {"yahoo", "182.22.16.251"},
};

int main() {
 std::string s;
 for (const auto& p : data) {
  std::cout << p.first << " | " << p.second << "\n";
 }
 std::cout << "あなたのホスト名は? ";
 std::cin >> s;
 std::cout << s << "のIPアドレスは" << data.at(s) << "です。"<<std::endl;
}
この回答への補足あり
    • good
    • 0

> ホスト名からIPアドレスを引く機能,またその逆の,IPアドレスからホスト名を引く機能を実装してください。



該当プログラムが動作するコンピューターで利用できるDNSサーバーに対してnslookupをするだけです。
nslookupが何かわからない場合はご自身で教科書やネット検索でお調べください。

習っていない問題は出されないはずで。。。(^^;
参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング