c++ - for循环在c ++中没有执行/正常工作
问题描述
我正在尝试比较两个整数向量。程序中的第一个循环正在执行,但第二个和第三个循环没有执行。
vector<int> a,b;
int range=0;
cout<<"Enter 1st vector."<<endl;
for(int n=0;cin>>n;)
{
a.push_back(n);
}
cout<<"Enter 2nd vector."<<endl;
for(int n=0;cin>>n;)
{
b.push_back(n);
}
if(a.size()>b.size())
range=b.size();
else
range=a.size();
cout<<"\nThird loop."<<endl;
for(int i=0;i<range;i++)
{
if(a[i]!=b[i])
goto here;
}
cout<<"\nSame vectors."<<endl;
return 0;
解决方案
由于使用cin >> n
as 条件,您会得到这种行为。在第一次循环执行期间,它不断返回 cin(它是 std::istream 的一个实例),它是有效的非空指针。但是当你按下 ctrl-z 时,底层流变得无效并开始返回 nullptr。因此cin>>n
,在第二个循环中评估为 false 并且循环不执行。然后将范围设置为 b 向量的大小为零,因此第三个循环不会执行。
检查此 stackoverflow 链接以获取有关使用 cin 作为条件 if (cin >> x) 的更多详细信息 - 为什么可以使用该条件?
如果您想在 for 循环中使用 cin 作为条件,请根据条件中断循环,n == SomeSpecificEndValue
而不是 ctrl-z
推荐阅读
- java - @Where 注解无法解析
- php - Laravel 雄辩的模型关系
- javascript - Javascript setTimeout 调用添加所有同时添加的 Dom 节点
- node.js - 在没有 SSH 的共享主机计划上安装 Npm、节点
- forms - 子窗体的选项
- cassandra - Cassandra IS NOT NULL 不受支持的限制
- javascript - Angular 5/6:从 ASP.NET Core API HTTP 处理文件下载(带有友好文件名)
- javascript - 如何在每个循环车把js中添加另一个值
- java - Map中的Json对象,如何在java中获取它?
- python - 找数的算法