我猜你正在等待第一个循环结束时,当你输入或什么。但那不是你编码的东西。你编写了“填充v1直到没有输入”,所以没有任何东西放在v2中也就不足为奇了。
也许你可以尝试以下内容,它会读取一行,并将内容放入v1中,然后读取第二行并将内容放入v2中。它使用getline读取单行文本,然后将该行放入字符串流中,一次只能从一个数字读取。
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void fill_vector_from_one_line(vector<int>& v)
{
string str;
if (getline(cin, str))
{
istringstream iss(str);
int elem;
while (iss >> elem)
v.push_back(elem);
}
}
int main()
{
cout << "Insert v1: ";
fill_vector_from_one_line(v1);
cout << "Insert v2: ";
fill_vector_from_one_line(v2);
}
道歉的任何错误,我没有检查过。
第一个循环已经捕获了来自'cin'的任何输入,使得第二个循环没有任何剩余。你想完成什么? – Howard
会更好,如果你还要求用户在最后输入y或n个字符作为输入,根据这个字符继续循环,直到用户输入y或打破n; – 2011-07-10 17:25:06