qq_33555452 2016-03-12 06:29 采纳率: 100%
浏览 1405
已采纳

为什么这个程序while(cin>>name_editor)

我输入
hua
jia
^z

#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<algorithm>
#include<fstream>
#include<iterator>
#include<map>//包含map multimap
#include<set>//包含set multiset
using namespace std;
 void print_multimap(const multimap<string, vector<string> > &multi_work)//输出multimap 
{
    for (multimap<string, vector<string> >::value_type it : multi_work)
    {
        cout << "the editor is " << it.first << "  ";
        stable_sort(it.second.begin(), it.second.end());//加入了一个排序算法
        for (vector<string>::value_type i : it.second)
            cout << i << "  ";
        cout << endl;
    }
}
int main()
{
    multimap<string, vector<string> >multi_work{ { "li",{ "huayuan","xinhua" } } };
    string name_editor;
    string name_work;
    multimap<string, vector<string> >::iterator it = multi_work.begin();
    cout << (*it).first << endl;
    while (cin >> name_editor)
    {
        int temp_int = 0;
        cout << "input n or 0" << endl;
        cin >> temp_int;
        if (temp_int)//加入作者
        {
            insert_iterator<multimap<string, vector<string> >> it = inserter(multi_work, multi_work.end());
            cout << "please input the editor's work" << endl;
            vector<string>vec_temp;
            while (cin >> name_work)//放入作品
            {
                vec_temp.push_back(name_work);
            }

            pair<string, vector<string> > pair_temp;//用插入迭代器赋值进入multimap中
            pair_temp.first = name_editor;
            pair_temp.second = vec_temp;
            *it = pair_temp;
        }

        else
        {//找到这个作者并返回该位置的迭代器
            multimap<string, vector<string> >::iterator it = multi_work.find(name_editor);
            cout << "please input the editor's new work" << endl;
            vector<string>vec_temp;
            while (cin >> name_work)//放入作品
            {
                vec_temp.push_back(name_work);
            }
            (*it).second = vec_temp;

        }
    }
    print_multimap(multi_work);
    cout << "input an editor you want to erase " << endl;
    string name_editor1;
    cin >> name_editor1;
    multi_work.erase(name_editor1);
    cout << endl;
    print_multimap(multi_work);
    system("pause");
}
  • 写回答

3条回答 默认 最新

  • apprentices 2016-03-13 03:25
    关注

    你的while循环语句就是说你有一次输入,使得cin语句为真,执行一次循环体,若无输入与则为假,循环体当然不执行,要想结束循环要输入ctrl+c还是别的,记得不是很清楚你查下就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面