C++ I';我试图使用一个函数将文本文件读入c++;
我试图将两个文本文件读入单独的数组,但在调试时,从文件中读取的数字会变成垃圾。我想这是我放置数组的方式,但我不完全确定,或者可能是因为循环中的计数器和数组中的I很奇怪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
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()
的声明、调用和定义之间存在不匹配。