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没写入数据?
展开
 我来答
xjc_cd
2010-08-24 · TA获得超过413个赞
知道小有建树答主
回答量:445
采纳率:0%
帮助的人:436万
展开全部
其实你的GETLINE已经接收到了,只不过接收到的那行是空行而已,所以输出也是为空。

改这成这样吧。
getline(cin, familyInformation, ' '); //输入空格键结束

在你输入串最后加一空格,即可表示输入结束,就能正确接收到数据了。

#pragma warning(disable : 4786)//不知道什么意思?
这句要放到包含map头文件前才能有效屏掉那些warning.
youyangchen
2010-08-23 · TA获得超过184个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:76.9万
展开全部
编译器编译含有map的代码的时候可能会产生一些无关重要的警告,但是还是能编译通过,并且不影响程序的运行,所以#pragma warning(disable : 4786)用于指示编译器关闭这个选项,使其不会发出警告。你可以把这行代码去掉再次编译,看看下面的输出有何不同就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰上游鱼
2010-08-23 · TA获得超过636个赞
知道小有建树答主
回答量:951
采纳率:0%
帮助的人:687万
展开全部
哈哈 代码挺长的,问题是什么呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式