[英]How to read a table from .txt file to C++
我想从文件中读取矩阵并在我的程序中使用它。 但是当我输出结果时,它表明它没有正确读取。 这是代码:
#define I 5
#define J 5
#define P 2
int i,j,k; //for loops
int main ()
{
ifstream inFile;
ofstream outFile;
double C[I][J];
inFile.open("C.txt", ios::in);
if (! inFile) {
cerr << "unable to open file C.txt for reading" << endl;
return 1;
}
for(i=0; i<I; i++)
for(j=0; j<J; j++)
inFile >> C[i][j];
outFile.open("results.txt");
outFile<< "C" <<endl;
for(i=0;i<I;i++)
{
for(j=0;j<J;j++)
outFile<< C[i][j];
outFile<< endl;
}
inFile.close();
outFile.close();
return 0;
}
C是一个整数值为2 3 5的矩阵......但我得到的是
316-9.25596e + 061-9.25596e + 061-9.25596e + 061-9.25596e + 061 -9.25596e + 061-9.25596e + 061-9.25596e + 061-9.25596e + 061-9.25596e + 061 -9.25596e + 061-9.25596e + 061-9.25596e + 061-9.25596e + 061-9.25596e + 061 -9.25596e + 061-9.25596e + 061-9.25596e + 061-9.25596e + 061-9.25596e + 061 -9.25596e + 061-9.25596e + 061-9.25596e + 061-9.25596e + 061-9.25596e + 061
您应该在每个数字后输出一个空格,否则它们将全部粘在一起。
outFile<< C[i][j] << " ";
您还应检查输入的有效性。 没有在这里显示(你已经知道如何检查if (! inFile)
)。
我怀疑你遇到新行问题,下面的修改会在读完每一行后忽略换行符:
for(i=0; i<I; i++) {
for(j=0; j<J; j++)
inFile >> C[i][j];
inFile.ignore(); /// <<<--------
}
您似乎正在将未初始化的变量写入输出文件,从而导致未定义的行为。
我怀疑你的C.txt
文件不包含你的程序正在寻找的5x5矩阵。
您应该添加一个简单的错误检查,例如:
for(i=0; i<I; i++)
for(j=0; j<J; j++)
if (!(inFile >> C[i][j])) { /* something's wrong here */ }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.