1

読み取るテキスト ファイルがありますが、(意図的に) 整形されていません。

データを構造体に並べ替える必要があり、データ型が異なるため、最初にそれらを配列に並べ替えて、順序に基づいて構造体に並べ替えることができます。行を取得するコードを作成し、スペースがあるかどうかをテストし、スペースがある場合は、区切り文字として「 」を使用して再度スキャンします。そうでない場合は、文字列を配列に格納するだけです。

コードは次のとおりです。

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 ワードのデータの 1 行だけがスキップされます。その行は、その行が単一の文字列であるかのように処理されていません。配列にまったく含まれていません。

編集:コードを追加

4

1 に答える 1

0

気にしないでください、私はgetl​​ine()の代わりに「>>」が機能することを理解しました。

于 2012-04-26T00:48:42.677 に答える