字段组成一个长string模拟输出即可,不需要结构体
string不要用scanf强行&str[0],无法接受size()会导致拼接时错误,要用cin输入
string不要用scanf强行&str[0],无法接受size()会导致拼接时错误,要用cin输入
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<map>
using namespace std;
int main(){//例题10.7 清华大学 查找学生信息
int n,m;
//用结构体会有深浅拷贝的问题,字段组成一个长string模拟输出即可
map<string,string> students;
//map的key必须是string,不能是char*
string query;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
string id;
string name;
string gender;
string age;
cin>>id>>name>>gender>>age;
string info = id+" "+name+" "+gender+" "+age;
students[id] = info;
}
scanf("%d",&m);
for(int i=0;i<m;i++){
cin>>query;
map<string,string>::iterator row = students.find(query);
if(row==students.end()){
cout<<"No Answer!"<<endl;
} else {
cout<<row->second<<endl;
}
}
}
return 0;
}

京公网安备 11010502036488号