2012-04-25 12 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

+0

そして問題は? –

+0

さて、私が探していたことは分かりました。私はgetl​​ine()を使って2日間物事を複雑にしていました。私は実際にはまだ私のコードがうまくいかなかったのかまだ分かりません。私は自分の質問に数時間以上答えることができないので、少しでも未回答のままになっています。 – user1279914

答えて

0

ネヴァーマインドを追加し、私は、 ">>" を考え出し)(のgetlineの代わりに動作します。

関連する問題