1

问题是,在 C++ 中,我希望从用户那里获取数字并将每个 int 放入一个向量中。所以我写了以下代码:

#include <iostream>
#include <vector>
using namespace std;

vector<int> readVals()
{
    vector<int> read;
    int temp;
    cin >> temp;
    while (!cin.fail() && !cin.eof())
        {
            read.push_back(temp);
            cin >> temp;
        }
    return read;
}

void printVals(vector<int> v)
{
    if(v.size() >= 1)
        {
            for (vector<int>::size_type i = 0; i < v.size()-1; i++ )
        {
            cout << v[i] << " ";
            cout << v[v.size()-1] << "\n";
        }
    }
}

int main()
{
    vector<int> a = readVals();
    printVals(a);
    return 0;
}

然后,我编译它以创建一个 a.out 文件。我有一些数字in1。当我执行命令时:a.out < in1,我得到了我想要的。但是当我希望数据可以由用户输入时,我感到很困惑。用户可以输入一些数字,然后按Enter传递数字。但是,我用了getline(),失败了。!="\n", 失败的。每次按 时Enter,程序似乎仍在等待更多数字而不打印结果。有没有人可以帮助我成功?谢谢!

4

1 回答 1

4

您的循环正在等待 cin 处于“失败”状态或文件末尾。按回车键也不行。您可以通过在 windows 上按 CTRL-Z 或在 unix/mac 上按 CTRL-D 来结束输入。这些将“文件结束”字符发送到 cin。或者,将循环条件更改为“侦听”某些特定输入。

于 2012-11-16T03:42:20.963 回答