使用pushback逐个扫描两个向量时出现问题 我对C++编程和栈溢出也很陌生。我的问题是: int x,y; vector<int> v1,v2; cout<<"Enter the elements in vector"<<endl; while(cin>>x) v1.push_back(x); while(cin>>y) v2.push_back(y); for(auto i:v1) cout<<i<<endl; for(auto j:v2) cout<<j<<endl; intx,y; 向量v1,v2; 库蒂) v2.推回(y); 用于(自动i:v1) cout

使用pushback逐个扫描两个向量时出现问题 我对C++编程和栈溢出也很陌生。我的问题是: int x,y; vector<int> v1,v2; cout<<"Enter the elements in vector"<<endl; while(cin>>x) v1.push_back(x); while(cin>>y) v2.push_back(y); for(auto i:v1) cout<<i<<endl; for(auto j:v2) cout<<j<<endl; intx,y; 向量v1,v2; 库蒂) v2.推回(y); 用于(自动i:v1) cout,c++,vector,C++,Vector,问题在于,第一个循环将读取所有输入,并且不留下任何输入添加到第二个向量。扪心自问,你如何期望第一个循环知道何时停止并进入第二个循环?我想你可能有一些错误的想法,比如,如果你把第二个向量的输入放到一条新线上,第一个循环不知怎么会知道停止。但是>不是这样工作的 另外,你真正的意思是push_back而不是push back。始终将真实代码发布到SO。令人惊讶的是,在“翻译”用于发布到SO的代码时,会犯很多错误。毫不奇怪,海报在抄写代码时所犯的错误会得到答案,而不是他们真正想问的问题。这段代码肯定不是

问题在于,第一个循环将读取所有输入,并且不留下任何输入添加到第二个向量。扪心自问,你如何期望第一个循环知道何时停止并进入第二个循环?我想你可能有一些错误的想法,比如,如果你把第二个向量的输入放到一条新线上,第一个循环不知怎么会知道停止。但是
>
不是这样工作的


另外,你真正的意思是
push_back
而不是
push back
。始终将真实代码发布到SO。令人惊讶的是,在“翻译”用于发布到SO的代码时,会犯很多错误。毫不奇怪,海报在抄写代码时所犯的错误会得到答案,而不是他们真正想问的问题。

这段代码肯定不是您编译的代码
pushback
不是
std::vector
的成员,这将是
pushback
。请张贴正确的。
而(cin>>x)
表示“读取尽可能多的整数”。程序如何知道何时停止阅读?你的设计有缺陷。如果您向我们展示一些输入,以及您希望如何读取它,我们可能会找到一个有效的解决方案或一个副本。而(cin>>x)将读取我想要输入的数字。要停止输入,1)输入无效的输入将停止。2)输入ctrl+Z(行尾字符)也将停止输入。样本输入-10203045 abcd。所以cin将读取整数,然后推到向量上,但当它遇到abcd(一些无效输入)时,cin的计算结果为false(cin仅在输入有效时计算为true),因此第一个循环停止。我的第一个循环工作正常,读取输入,然后按下,然后在需要时停止,但第二个循环不工作。程序跳过第二个,第二个向量是空的。实际上,我正在从一本书《C++入门》中学习C++。在本文中提到,如果要扫描某个内容直到用户需要,请像这样使用while(cin>>v1)并停止此扫描,1)。我们可以输入无效的内容,以便while中的cin计算为false并循环停止。2)我们可以输入Ctrl+Z,这是结束行字符以停止循环。因此,在给定的代码中,我尝试扫描到我想要的为止。第一个循环工作正常,当我输入无效的内容(如abcd)时停止,但第二个无效。感谢您的建议,我一定会从下次开始放入实际代码。@divyamdunda我好的,这很好,但应该在前面提到过。C++入门是一本好书,所以它也应该提到,当你故意错误地流,你需要使用<代码> CIN。CULL()(代码)>和<代码> CIN。忽略(…);<代码>(按该顺序)以使其重新工作。也许你可以查一下这两种方法。谢谢@john。它在使用cin.clear()和cin.ignore(..)后工作。在阅读了你的回复后,我查看了这本书,发现这些方法在后面的章节中有所提及。再次感谢。