从Getline解析空间分隔数字

时间:2012-04-12 19:29:09

标签: c++ parsing getline

我正在编写一个小程序,它将读取包含5条记录中3行的纯ASCII文本文件,如下所示:

  

f_name l_name
  ID#
  int int int int

我成功地将前2行放在他们所属的1D阵列中,但是我在将这一系列的整数放入2D阵列时遇到了麻烦。我最接近解决方案的方法是使用以下行:

studentScores[row][col] = atoi(input.c_str());

然而,atoi仅解析第一个数字,然后抛弃其余部分。我需要将字符串中的每个数字放在数组的单独元素中。我尝试使用stringstream,但我无法让它正常工作;显然,我想要使用的函数包含在不同版本的stringstream中,而不是我使用的。

我可以用什么来解析这个字符串?

1 个答案:

答案 0 :(得分:2)

#include <string>
#include <sstream>

// ...

int ints[4];
std::string input;
std::getline(stream, input);
std::istringstream(input) >> ints[0] >> ints[1] >> ints[2] >> ints[3];

(为简洁省略了错误处理。)