[英]for loop is not executing/working properly in 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
作为条件,您会得到这种行为。 在第一次循环执行期间,它不断返回 cin (它是 std::istream 的实例),它是有效的非空指针。 但是当你按下 ctrl-z 时,底层流变得无效并且它开始返回 nullptr。 因此,第二个循环中的cin>>n
评估为 false 并且循环不执行。 然后将范围设置为 b 向量的大小,该向量为零,因此不会执行第三个循环。
检查此 stackoverflow 链接以获取有关使用 cin 作为条件if (cin >> x) - 为什么可以使用该条件的更多详细信息?
如果您想在 for 循环中使用 cin 作为条件,请根据n == SomeSpecificEndValue
而不是 ctrl-z 等条件中断循环
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.