当从键盘输入数据时,如何在用户在C ++中按“输入”时完成输入?

时间:2012-11-16 03:37:23

标签: c++ cin

问题是,在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 时,程序似乎仍在等待更多数字而不打印结果。有没有人可以帮我成功?谢谢!

1 个答案:

答案 0 :(得分:4)

您的循环正在等待cin处于“失败”状态或文件末尾。击中输入既不会。您可以通过在Windows上按CTRL-Z或在unix / mac上按CTRL-D来结束输入。这些将“文件结束”字符发送给cin。或者,将循环条件更改为“监听”某些特定输入。