问题是,在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 时,程序似乎仍在等待更多数字而不打印结果。有没有人可以帮我成功?谢谢!
答案 0 :(得分:4)
您的循环正在等待cin处于“失败”状态或文件末尾。击中输入既不会。您可以通过在Windows上按CTRL-Z或在unix / mac上按CTRL-D来结束输入。这些将“文件结束”字符发送给cin。或者,将循环条件更改为“监听”某些特定输入。