字段组成一个长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; }