for循环无法在c ++中正常执行/工作

问题描述 投票:0回答:1

我正在尝试比较两个整数向量。程序中的第一个循环正在执行,但是第二个和第三个循环未执行。

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;

This is the output.

c++ for-loop vector cin
1个回答
0
投票

由于使用cin >> n作为条件,因此出现此行为。在第一个循环执行期间,它将不断返回有效的非空指针cin(这是std :: istream的实例)。但是,当您按ctrl-z时,基础流变为无效,并且开始返回nullptr。因此,第二个循环中的cin>>n计算为false,并且循环不执行。然后将范围设置为b矢量的大小,该大小为零,因此不会执行第三次循环。

检查此stackoverflow链接以获取更多有关使用cin作为条件的详细信息if (cin >> x) - Why can you use that condition?

© www.soinside.com 2019 - 2024. All rights reserved.