C++ 附加向量。结果获胜';t打印

C++ 附加向量。结果获胜';t打印,c++,vector,append,C++,Vector,Append,我试图输入a和b的整数,然后把这些整数打印在一起。例如,为a输入1234,为b输入4321将产生:1234321。我不明白为什么我的程序不打印这个。每当我输入-1时,什么都不会发生。程序运行时,我是否执行了错误的进程?谢谢你的帮助 #include <iostream> #include <vector> using namespace std; vector<int> append(vector<int> a, vector<int&g

我试图输入a和b的整数,然后把这些整数打印在一起。例如,为a输入1234,为b输入4321将产生:1234321。我不明白为什么我的程序不打印这个。每当我输入-1时,什么都不会发生。程序运行时,我是否执行了错误的进程?谢谢你的帮助

#include <iostream>
#include <vector>

using namespace std;

vector<int> append(vector<int> a, vector<int> b)

{
    int n = a.size();
    int m = b.size();

    vector<int> c(n + m);

    int i;

    for (i = 0; i < n; i++)
        c[i] = a[i];

    for (i = 0; i < m; i++)
        c[n + i] = b[i];

    return c;

}
main()
{
    vector<int>a, b, c;
    int temp;

    cin >> temp;
    while (temp != -1) {
        a.push_back(temp);
        cin >> temp;
}

    cin >> temp;
    while (!cin.eof()) {
        b.push_back(temp);
        cin >> temp;
}

    c = append(a, b);
    for (int i = 0; i < c.size(); i++)
        cout << c[i] << " ";
    cout << endl;

}
#包括
#包括
使用名称空间std;
向量附加(向量a、向量b)
{
int n=a.size();
int m=b.size();
向量c(n+m);
int i;
对于(i=0;i>温度;
而(温度!=-1){
a、 推回(温度);
cin>>温度;
}
cin>>温度;
而(!cin.eof()){
b、 推回(温度);
cin>>温度;
}
c=附加(a,b);
对于(int i=0;i
每当我输入-1时,什么都不会发生


这是因为您当时到达了第二个
cin>>temp
语句(就在
while.eof()
loop之前)。这时您开始为
b
vector输入值。通过在流中输入eof字符(windows上为CTRL+Z,linux上为CTRL+D)结束循环.

您有两个循环,一个用于输入向量
a
,另一个用于输入
b

按一次-1将仅终止第一个循环。第二个循环由您尚未输入的
eof
终止。因此,输入
eof
(特定于您的系统)或让第二个循环终止于-1(在这种情况下,您需要再次输入-1).

参数读取中的第二个while循环似乎是错误的。我所做的是键入任何整数,如“23432”并单击enter。然后键入另一个整数,如“64364”并单击enter。然后输入-1。我以为这将打印出“2343264364”它只是打印一个空白。尽管不必要地复制了输入向量,但您的append函数仍能工作。您应该缩小问题范围并删除不相关的代码。如果您对执行许多不同操作的代码有问题,请将其拆分为单个责任部分,然后依次测试每个部分。