• 字符串中可能有空格,分界字符选']',不要选空格
  • 凡是字符串可能含空格的,用getline(cin,s)之前,检查前面缓冲区是否需要getchar()
#include<iostream>
#include<string>
#include<map>
using namespace std;

int main(){
    map<string,string>mymap;
    string s;
    while(1){
      getline(cin,s);
      if(s=="@END@")break;
      int pos=s.find("]");//分界
      mymap[s.substr(0,pos+1)]=s.substr(pos+2);
      mymap[s.substr(pos+2)]=s.substr(0,pos+1);
    }
    
    int m;
    scanf("%d",&m);
    getchar();//
    string key;
    while(m--){//查询
      getline(cin,key);
      string ans=mymap[key];
      if(ans=="")ans="what?";
      else if(ans[0]=='['){
        ans=ans.substr(1,ans.size()-2);
      }
      cout<<ans<<endl;
    }
  
  return 0;
}