输入流问题

lty369963 2012-10-10 10:12:20
#include<iostream>
#include<vector>
#include<list>;
#include<string>
using namespace std;

int main()
{
vector<int> v;
list<int> lst;
int i;
while(cin>>i)
v.push_back(i);
cin.clear();
while(cin>>i)
lst.push_back(i);
vector<int>::iterator vit=v.begin();
list<int>::iterator lit=lst.begin();
while(vit!=v.end()&&lit!=lst.end())
{
if(*vit!=*lit)
break;
++vit;
++lit;
}
if(vit==v.end()&&lit==lst.end())
cout<<"they are same"<<endl;
else
cout<<"they are different"<<endl;
return 0;
}
这是判断两个容器的内容是否相等的程序;
我在输入第一个流后,然后ctrl+z,在输入下一个相同的流,然后ctrl+z,但显示they are different。
不理解c.clear(),怎么重复输入;
...全文
104 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
漫步者、 2012-10-10
  • 打赏
  • 举报
回复
while(vit!=v.end()&&lit!=lst.end())
{
if(*vit!=*lit)
break;
++vit;
++lit;
}
if(vit==v.end()&&lit==lst.end())
cout<<"they are same"<<endl;
else
cout<<"they are different"<<endl;
return 0;


你输入的数据的个数是一样且全部相同吗?

if(vit==v.end()&&lit==lst.end()) 这个条件是都是到了end,还有个原因是:
if(*vit!=*lit)
break;
如果不相等,跳出循环来执行的else
十八道胡同 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

最简单的办法把v和lst 里面的东西都输出来看下。
[/Quote]
单步下就知道了
十八道胡同 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

这样输出后,不显示结果
[/Quote]
我的是VS2008
lty369963 2012-10-10
  • 打赏
  • 举报
回复
这样输出后,不显示结果
十八道胡同 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

我输入的是
123
ctrl+z
123
ctrl+z
显示:different
[/Quote]
123回车
ctrl+z回车
123回车
ctrl+z回车??
这样没问题,不知你是怎么输入的
十八道胡同 2012-10-10
  • 打赏
  • 举报
回复
最简单的办法把v和lst 里面的东西都输出来看下。
cyshuxin 2012-10-10
  • 打赏
  • 举报
回复
cin.clear()将IO流中所有的状态值(bad、fail、eof、good)设置为有效。代码没有问题,可能是你输入时有误。
lty369963 2012-10-10
  • 打赏
  • 举报
回复
我输入的是
123
ctrl+z
123
ctrl+z
显示:different

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧