C++map<string, vector< pair<string, string> > > family
#include<iostream>#include<utility>#include<map>#include<vector>#include<string>#prag...
#include <iostream>
#include <utility>
#include <map>
#include <vector>
#include <string>
#pragma warning(disable : 4786)//不知道什么意思?
#include<stdlib.h>//
using namespace std;
int main()
{
map<string, vector< pair<string, string> > > family;
string familyName;
string familyMember;
string familyInformation;
vector< pair<string, string> > member;
pair<string, string> information;
while(true){
cout << "请输入要添加的姓氏:";
cin >> familyName;
while(true){
cout << "请输入" << familyName << "氏成员:";
cin >> familyMember;
cout << "请输入" << familyMember << "的资料:" << endl;
//getline(cin,familyInformation);//使用getline时,familyInformation收不到数据,这是为什么?
cin >> familyInformation;//使用cin,程序完全正常,可是我要如何使用getline来获得一行数据呢?
cout << familyInformation << endl;//为什么familyInformation没写入数据?
information = make_pair(familyMember,familyInformation);
fflush(stdin);
member.push_back(information);
cout << endl << "是否继续添加成员?(yes/no):";
string answer;
cin >> answer;
if(answer != "yes")
break;
}
family.insert(make_pair(familyName,member));
member.erase(member.begin(),member.end());//请空VECTOR容器,以便再次使用。
cout << "是否添加另一个氏族?(yes/no):";
string answer1;
cin >> answer1;
if(answer1 != "yes")
break;
}
for(map<string, vector< pair<string,string > > >::iterator beg = family.begin(); beg != family.end(); ++beg){
cout << beg->first.c_str() << "氏家族信息:" << endl;
for(vector< pair<string,string> >::iterator begvec = beg->second.begin(); begvec != beg->second.end(); ++begvec){
cout << begvec->first.c_str() << endl;
cout << begvec->second.c_str() << endl;
}
}
return 0;
}
#pragma warning(disable : 4786)//不知道什么意思?
这个问题不要回答,谢谢!
重要的问题是:
//getline(cin,familyInformation);//使用getline时,familyInformation收不到数据,这是为什么?
cin >> familyInformation;//使用cin,程序完全正常,可是我要如何使用getline来获得一行数据呢?
cout << familyInformation << endl;//为什么familyInformation没写入数据? 展开
#include <utility>
#include <map>
#include <vector>
#include <string>
#pragma warning(disable : 4786)//不知道什么意思?
#include<stdlib.h>//
using namespace std;
int main()
{
map<string, vector< pair<string, string> > > family;
string familyName;
string familyMember;
string familyInformation;
vector< pair<string, string> > member;
pair<string, string> information;
while(true){
cout << "请输入要添加的姓氏:";
cin >> familyName;
while(true){
cout << "请输入" << familyName << "氏成员:";
cin >> familyMember;
cout << "请输入" << familyMember << "的资料:" << endl;
//getline(cin,familyInformation);//使用getline时,familyInformation收不到数据,这是为什么?
cin >> familyInformation;//使用cin,程序完全正常,可是我要如何使用getline来获得一行数据呢?
cout << familyInformation << endl;//为什么familyInformation没写入数据?
information = make_pair(familyMember,familyInformation);
fflush(stdin);
member.push_back(information);
cout << endl << "是否继续添加成员?(yes/no):";
string answer;
cin >> answer;
if(answer != "yes")
break;
}
family.insert(make_pair(familyName,member));
member.erase(member.begin(),member.end());//请空VECTOR容器,以便再次使用。
cout << "是否添加另一个氏族?(yes/no):";
string answer1;
cin >> answer1;
if(answer1 != "yes")
break;
}
for(map<string, vector< pair<string,string > > >::iterator beg = family.begin(); beg != family.end(); ++beg){
cout << beg->first.c_str() << "氏家族信息:" << endl;
for(vector< pair<string,string> >::iterator begvec = beg->second.begin(); begvec != beg->second.end(); ++begvec){
cout << begvec->first.c_str() << endl;
cout << begvec->second.c_str() << endl;
}
}
return 0;
}
#pragma warning(disable : 4786)//不知道什么意思?
这个问题不要回答,谢谢!
重要的问题是:
//getline(cin,familyInformation);//使用getline时,familyInformation收不到数据,这是为什么?
cin >> familyInformation;//使用cin,程序完全正常,可是我要如何使用getline来获得一行数据呢?
cout << familyInformation << endl;//为什么familyInformation没写入数据? 展开
3个回答
展开全部
编译器编译含有map的代码的时候可能会产生一些无关重要的警告,但是还是能编译通过,并且不影响程序的运行,所以#pragma warning(disable : 4786)用于指示编译器关闭这个选项,使其不会发出警告。你可以把这行代码去掉再次编译,看看下面的输出有何不同就知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哈哈 代码挺长的,问题是什么呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询