请问一个C++程序,为何输入时跳过了?

#include<iostream>#include<vector>usingnamespacestd;voidmain(){inta,b;vector<int>v1,v... #include <iostream>
#include <vector>
using namespace std;
void main()
{
int a,b;
vector<int> v1,v2;
cout<<"请输入第一组数据"<<endl;
while(cin>>a)
v1.push_back(a);
cout<<"请输入第二组数据"<<endl;
while(cin>>b)
v2.push_back(b);
if(v1.size()!=v2.size())
{
cout<<"两数不相等";
}
else
{
for(vector<int>::iterator it1=v1.begin(),it2=v2.begin();it1!=v1.end();++it1,++it2)
if((*it1)!=(*it2))
{
break;
cout<<"两数不相等"<<endl;
}
else
{
cout<<"两数相等"<<endl;
}
}
}
我输入到b得时候直接跳过了,这是为什么?
展开
 我来答
nonstop525
2011-07-23 · TA获得超过567个赞
知道小有建树答主
回答量:341
采纳率:66%
帮助的人:200万
展开全部
你不能用Cin
 该调用形式为cin.peek() 其返回值是一个char型的字符   其功能是从输入流中读取一个字符 但该字符并未从输入流中删除
而cin就是不仅读进去了,并把该字符在输入流中删除!
追问
着呢写?
我用cin.clear()不是更简边吗?
porker2008
2011-07-23 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#include <iostream>
#include <vector>
using namespace std;
void main()
{
int a,b;
vector<int> v1,v2;
cout<<"请输入第一组数据"<<endl;
while(cin>>a)
v1.push_back(a);
cout<<"请输入第二组数据"<<endl;
cin.sync(); // 清空buff
cin.clear(); // 重置cin
while(cin>>b)
v2.push_back(b);
if(v1.size()!=v2.size())
{
cout<<"两数不相等";
}
else
{
for(vector<int>::iterator it1=v1.begin(),it2=v2.begin();it1!=v1.end();++it1,++it2)
if((*it1)!=(*it2))
{
break;
cout<<"两数不相等"<<endl;
}
else
{
cout<<"两数相等"<<endl;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ghj123h
2011-07-24 · TA获得超过2560个赞
知道小有建树答主
回答量:1792
采纳率:0%
帮助的人:371万
展开全部
因为缓冲区还留着EOF,必须fflush一遍
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式