2012-04-25 57 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()。

相關問題