C++ I';我试图使用一个函数将文本文件读入c++;

C++ I';我试图使用一个函数将文本文件读入c++;,c++,arrays,function,C++,Arrays,Function,我试图将两个文本文件读入单独的数组,但在调试时,从文件中读取的数字会变成垃圾。我想这是我放置数组的方式,但我不完全确定,或者可能是因为循环中的计数器和数组中的I很奇怪 void read(ifstream &A_bank, ifstream &B_bank, string &n1, string& n2, int &i, int& j, float &num, float &num1, float &t

我试图将两个文本文件读入单独的数组,但在调试时,从文件中读取的数字会变成垃圾。我想这是我放置数组的方式,但我不完全确定,或者可能是因为循环中的计数器和数组中的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++;
    }
}

您的问题之一是错误地使用了
eof()
函数。
请参阅:
eof()仅在最后一次读取操作失败时返回true,而不是在最后一次读取操作是最后一次可能的读取操作时返回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++;
}
for(int j=0;/*此处测试j:j>br)){
打破
}
b[j]=br;
总+=b[j];
计数器1++;
}

1。始终检查您是否成功读取输入。2.切勿使用
eof()
来控制循环。3.始终确保不会超出数组边界。修复这些问题并查看是否仍然存在问题。
a
b
数组是否由调用者正确调整大小?使用
std::vector
及其
push_back()
方法将数据添加到数组(并动态增长它们)怎么样?我很奇怪,有一个函数可以对两个数组执行两次相同的操作。为什么不让一个函数对一个数组执行一次操作,然后用不同的参数调用它两次呢?如何调用
read()
?如何声明传递到
read()
中的数组?此代码是否来自?如果是,则
read()
的声明、调用和定义之间存在不匹配。