C ++将文本文件中的数字读入数组

时间:2016-04-20 15:12:57

标签: c++ arrays file text

你好,我是第一年的学生,这就是为什么我遇到这么简单的任务的问题。 我目前正在使用矩阵计算器,但在非常乞讨中我发现了从文本文件中读取数字并在屏幕上打印它们的一些问题 这是我的代码:

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;
 int main()
{
    ifstream infile;
    infile.open("matrix.txt", ios::in);
    //check for an error
    if(infile.fail())
    {
        cerr<<"Error opening file";
        exit(0);
    }
    //char sign;
    int n = 0;
    double matrix[n];
    while(!infile.fail())
    {
        infile >> matrix[n];
        n++;
        //if(infile.eof()) {break;}
    }

infile.close();


    for(int i = 0;i<9;i++)
    {
        cout << matrix[i]<<endl;
    }
return 0;
}

在关于整个程序的快捷方式中,它应该从文本文件中读取并计算2x2矩阵或3x3矩阵的行列式。如果您可以给我任何将来有用的想法,例如我如何检查文本文件中的行是否结束我将感激不尽。但大多数时候我想知道我做错了什么。感谢上面的。

1 个答案:

答案 0 :(得分:0)

请考虑以下代码行。

int n = 0;
double matrix[n];
while(!infile.fail())
{
    infile >> matrix[n];
    n++;
    //if(infile.eof()) {break;}
}

您需要阅读编译器的文档以查找它是否支持可变长度数组。它们不允许使用标准c ++,因此如果您希望程序可移植,则需要停止使用它们。

其次,您分配一个大小为0的数组,这是不允许的(同样,您的编译器可能允许它作为非标准功能)。

第三,如果matrix的大小为n,那么matrix[n]将会溢出。

第四,在使用infile >> matrix[n]提取值之前检查失败位是个坏主意。在某些时候,你会想要实际计算出你读过多少有效值,你会发现在提取之后测试提取是否成功更简单。