2015-02-11 57 views
-3

我遇到了作业问题。我必须打开一个看起来或多或少像这样的文本文件:从字符串中提取数字到数组中

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

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

回答

0

读取输入的一行像你描述的(file可能是ifstream或这里istringstream):

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('|');