在按下空格时获得用户输入

时间:2013-06-05 17:14:24

标签: c++ input

我正在尝试解决用户必须输入数字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;
}

1 个答案:

答案 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

我再次检查所有内容,因此请按照您的需要进行操作。

编辑:在读取错误后添加了流的重置。