2

2 つのテキスト ファイルを別々の配列に読み取ろうとしていますが、デバッグすると、ファイルから読み取った数値がゴミとして出てきます。それは私が配列を配置している方法だと思いますが、完全にはわかりませんか、それともループ内のカウンターと配列内の i が奇妙になっているためでしょうか?

void read(ifstream &A_bank, ifstream &B_bank, string &n1, string& n2, int &i,
          int& j,  float &num, float &num1, float &total, float &total1,
          float a[], float b[])
{
    int counter = 0, counter1 = 0 ;

    getline(A_bank,n1);
    for(int i = 0; !A_bank.eof();i++)
    {
        A_bank >> a[i];
        total+=a[i];
        counter++;
    }

    getline(B_bank,n2);
    for(int j = 0; !B_bank.eof();j++)
    {
        B_bank>>b[j];
        total+=b[j];
        counter1++;
    }
}
4

1 に答える 1

1

あなたの問題の1つは、eof()関数の使い方が間違っていることです。
参照: http://en.cppreference.com/w/cpp/io/basic_ios/eof
eof() は、最後の読み取り操作が失敗した場合にのみ true を返します。最後の読み取り操作が最後の可能な読み取り操作であった場合ではありません。

両方のループを次のように変更します。

for(int j = 0; /*somehow test j here: j < MAX...*/;j++)
{
    int br;
    if (!(B_bank>>br)) {
        break;
    }
    b[j] = br;
    total+=b[j];
    counter1++;
}
于 2012-11-13T23:06:49.910 に答える