如何将表格从.txt文件读取到C++
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+06-9.25596e+061-9.25596e+061-9.25596e+061-9-25596e+06-9.25596e+061-9.25596e+061-9.25596e+0.61-9.2596e+061-19.25596e+601-9.25596e-061-9.25596e+061-9.25 596e+061.9-2.25596e+1061-9.25959e+061-95596e+061-9.25596 e+0619-2.25596e+0.61-9.25 596e+0.061-9.25 596e+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 */ }
相关文章:
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量