0

名前と番号を含むテキストファイルがあります。名前または文字列には15文字が含まれているので、文字列に追加する必要があります。私は構造物を扱っています。

struct grybautojas{
    string vardas;
    int barav, raudon, lep, diena;
}gryb[100];

その後、正しく行われる簡単な計算があります。問題は、すべてを1回だけ読み取ることです。情報の最初の「ボックス」を取得した後、それはただ停止します。結果ファイルの他のすべては、文字列として空白であるか、整数として0です。

これが私の入力関数です:

void ivedimas(){
    char eil[16];
    int b,r,l;

    inFile >> n;
    inFile.ignore();

    for(int i=0;i<n;i++){
        inFile.get(eil,15);
        gryb[i].vardas=eil;
        inFile >> gryb[i].diena;

        gryb[i].barav=0, gryb[i].raudon=0, gryb[i].lep=0;

        for(int m=0;m<gryb[i].diena;m++){
            inFile >> b >> r >> l;
            gryb[i].barav+=b, gryb[i].raudon+=r, gryb[i].lep+=l;
        }

        inFile.ignore();
    }

    inFile.close();
}

そして、これがデータを含むファイルです:

4
Petras        3
5 13 8
4 0  5 
16 1 0 
Algis         1 
9 6 13 
Jurgis        4 
4 14 2 
4 4  15 
16 15 251 
1  2  3 
Rita          2 
6 65 4 
4 4  13

どうしたの?

4

2 に答える 2

2
    inFile.get(eil,15);

    Rita          2 
    Petras        3
    00000000011111
    12345678901234

私は15を数えません、私は14を数えます。また、あなたの行のいくつかは最後にスペースがあるようです。入力ロジックを書き直して、はるかに堅牢にする必要があります。を読み取り、それらを解析します。

于 2013-02-06T12:46:17.920 に答える
0

この行:

inFile.get(eil,15);

名前に続く数字を読んでいます。

数字 (この例では 3) を読み取ろうとすると、代わりに次の数字 (5) が返されます。

于 2013-02-06T12:53:43.083 に答える