将数字从字符串提取到数组中

时间:2015-02-11 13:46:02

标签: c++

我的作业有问题。我必须打开一个看起来或多或少的文本文件:

-------------------------------------------------------------
|ammount        |       time            |delay              |
-------------------------------------------------------------
|100            |       342             | 4324              |

还有几行。我所要做的就是将数字放入一个数组中,对于上面的例子,它看起来像这样:ar[0]=100, ar[1]=342, ar[2]=4324。我想我需要逐行读取文件到getline的字符串,但接下来呢?如果我使用stringstream,我会获得|100而不是100。我现在真的没有想法了。

1 个答案:

答案 0 :(得分:0)

要阅读您所描述的一行输入(此处file可能是ifstreamistringstream):

for (int i = 0; i < 3; ++i)
{
    file.ignore(numeric_limits<streamsize>::max(), '|'); // Ignores all characters until it finds a '|' character
    file >> ar[i];  // Reads the number following the '|' to ar[i]
}
file.ignore(numeric_limits<streamsize>::max(), '\n'); // Finally, ignores all characters until newline

如果需要,您甚至可以制作一个小的快捷方式宏:

#define ignore_until(c) ignore(numeric_limits<streamsize>::max(), c)

并像这样使用它:

file.ignore_until('|');