2012-04-25 124 views
1

我有一个要读取的文本文件,但它没有格式化(有意)。用C++中的多个分隔符读取文件

我有对数据进行排序成一个结构,并且数据类型是不同的,所以第一我对它们进行排序到一个数组,所以我可以将它们分类到基于顺序的结构体。 我做了一个代码来获取一行,然后测试它是否有空格,如果有空格,它使用''作为分隔符再次扫描它。如果不是,它只是将字符串存储到数组中。

下面是代码:

int nextw(ifstream &file, string array[]){ 

    string line; 
    string token; 
    stringstream iss; 
    size_t foundspace; 

    int i = 0; 

    while(getline(file, line)){ 
      iss << line; 

      foundspace = line.find(" "); 
      if(foundspace != string::npos){ 
        while(getline(iss, token, ' ')){ 
          array[i++] = token; 
        } 
      } 
      else 
        array[i++] = line; 
    } 
    return i; 
} 

它返回该阵列的计数。

问题是它跳过了一行数据。 例如,我有:

data data data data data 
data 
data 
data 
data 
data 
skipped_data skipped_data 
data 
data 
etc... 

只有数据的2个字具有空间定界符单线被跳过。该行不被视为该行是单个字符串,它根本就不在数组中。

编辑:添加更多的代码

+0

没关系,我想通了。 – user1279914 2012-04-25 04:10:10

+0

问题是? – 2012-04-25 04:15:26

+0

嗯,我发现了>>做我正在寻找的东西,并且我用getline()使事情变得复杂2天。实际上我仍然不确定为什么我的代码不起作用。我不能回答我自己的问题几个小时,所以它仍然会显示为一段时间没有答案。 – user1279914 2012-04-25 06:25:54

回答

0

没关系,我想通了, “>>” 的作品,而不是函数getline()。

相关问题