将输入读入动态大小的数组中

时间:2011-05-08 21:21:24

标签: c++ python io

我一直试图做的是,从stdin读取一行并将其拆分,使用空格作为分隔符。

假设我将此作为输入:

  

2
  1 2
  3 4

第一行给出了我想要阅读的行数,它们都是整数行,由未知数量的空格分隔(即可以是1个空格,但也可以是10个空格)。登记/> 我一直试图做的是将这些行读入动态大小的整数数组中。

这在Python中非常简单:

foo = raw_input()
array = foo.split()

甚至更短:

foo = raw_input().split()

然而,由于这种情况,我必须学习C ++的美。 所以我尝试创建类似于上面Python代码的东西:

#include <iostream>

using namespace std;

int lines;
int *array;

int main() {
    cin >> lines;
    for (int line = 0; line < lines; line++) {
        // Something.
    }
}

我似乎不知道分割输入线的方法。我知道std :: cin读取直到它到达空格。但是,我似乎无法想到要计算线上数字的数量......

非常感谢正确的方向,谢谢。

2 个答案:

答案 0 :(得分:1)

所以你想要的只是一个轻推,这里有几个提示......

std::getline() - 允许您从流中读取std::string

然后,您可以使用您刚读过的字符串构建std::istringstream。然后使用此流来读取您的整数

例如:

std::string line;
if(std::getline(std::cin, line))
{
  std::istringstream str(line);
  int lc;

  if (str >> lc) // now you have the line count..
  {
    // now use the same technique above
  }
}

哦,对于“动态大小的数组”,您需要查看std::vector<>

答案 1 :(得分:1)

在C ++中,您可以使用[]访问字符串中的字符,就像该字符串是一个数组一样。我建议你从cin读一行到一个字符串,用for循环遍历字符串并检查每个字符以查看它是否是空格。每当您找到非空白字符时,请将其存储在数组中。