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条)

报告相同问题?

悬赏问题

  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符