读书人

这段程序的cingt;gt;str如何不执行? vc6.

发布时间: 2012-03-20 14:01:10 作者: rapoo

这段程序的cin>>str怎么不执行? vc6.0
代码如下:

C/C++ code
#include "stdafx.h"#include <utility>#include <map>#include <string>#include <iostream>using namespace std;int main(int argc, char* argv[]){    multimap<string,string> mlt_mp;    string auther_name="";    string book_name="";    string str="";    cout<<"input a author:";    while(cin>>auther_name)    {        cout<<"input a book name:";        cin>>book_name;        mlt_mp.insert(make_pair(auther_name,book_name));        cout<<"input a author:";    }    cout<<"input a auther who you are search:";    cin>>str;    pair<multimap<string,string>::iterator,multimap<string,string>::iterator > pos=mlt_mp.equal_range(str);    while(pos.first!=pos.second)    {        cout<<"book name:"<<pos.first->second<<endl;        pos.first++;    }    return 0;}

就是使用multimap查找元素
cout<<"input a auther who you are search:";
cin>>str;
这个cin直接就过去了 没有让我输入字符串 很奇怪

[解决办法]
C/C++ code
fflush(stdin);//加句这试试,楼主cout<<"input a auther who you are search:";    cin>>str;
[解决办法]
cin.clear();
cin.sync();
cout<<"input a auther who you are search:";
cin>>str;

[解决办法]
要清空缓冲区,比如你前边cin>>book_name;的时候先输入了后敲回车,但是cin只会从缓冲区读回车以前的读到book_name里边,但是回车还在缓冲区,那么下次cin就会出错。。。

读书人网 >C++

热点推荐