我正在尝试解决用户必须输入数字n的这种情况。然后在同一行后面输入n个数字。因此,我的程序需要在用户继续输入之前知道这个数字n,以便程序知道在n之后输出这些数字需要多大的动态数组。 (所有这一切都发生在一条线上至关重要。)
我尝试了以下但是似乎没有用。
int r;
cin >> r;
//CL is a member function of a certain class
CL.R = r;
CL.create(r); //this is a member function creates the needed dynamic arrays E and F used bellow
int u, v;
for (int j = 0; j < r; j++)
{
cin >> u >> v;
CL.E[j] = u;
CL.F[j] = v;
}
答案 0 :(得分:2)
您可以像往常一样在一行上执行此操作:
#include <string>
#include <sstream>
#include <iostream>
#include <limits>
using namespace std;
int main()
{
int *array;
string line;
getline(cin,line); //read the entire line
int size;
istringstream iss(line);
if (!(iss >> size))
{
//error, user did not input a proper size
}
else
{
//be sure to check that size > 0
array = new int[size];
for (int count = 0 ; count < size ; count++)
{
//we put each input in the array
if (!(iss >> array[count]))
{
//this input was not an integer, we reset the stream to a good state and ignore the input
iss.clear();
iss.ignore(numeric_limits<streamsize>::max(),' ');
}
}
cout << "Array contains:" << endl;
for (int i = 0 ; i < size ; i++)
{
cout << array[i] << ' ' << flush;
}
delete[] (array);
}
}
这是demonstration,您可以看到输入是一行6 1 2 3 4 5 6
。
我再次不检查所有内容,因此请按照您的需要进行操作。
编辑:在读取错误后添加了流的重置。