繁体   English   中英

C ++将数字从文本文件读入数组

[英]C++ reading numbers from a text file into an array

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

#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矩阵的行列式。 如果您能给我提出任何对将来有用的想法,例如我如何检查文本文件中的行是否结束,我将不胜感激。 但大多数情况下,我想知道我在做什么错。 从上面谢谢。

考虑下面的代码行。

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]提取值之前检查失败位是一个坏主意。 在某个时候,您实际上想弄清楚已经读取了多少个有效值,您会发现在提取之后测试提取是否成功比较简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM