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

Posted

技术标签:

【中文标题】C ++将文本文件中的数字读取到数组中【英文标题】:C++ reading numbers from a text file into an array 【发布时间】:2016-04-20 15:12:57 【问题描述】:

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

#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 矩阵的行列式。如果您能给我任何将来有用的想法,例如我如何检查文本文件中的行是否结束,我将不胜感激。但主要是我想知道我做错了什么。谢谢楼上的。

【问题讨论】:

这段代码有什么问题? 双矩阵[n] 是错误的...由于 n=0,这段代码是否正在编译 【参考方案1】:

考虑以下代码行。

int n = 0;
double matrix[n];
while(!infile.fail())

    infile >> matrix[n];
    n++;
    //if(infile.eof()) break;

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

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

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

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

【讨论】:

非常感谢您提供的所有提示,我仍然在犯一些错误。程序开始正常运行

以上是关于C ++将文本文件中的数字读取到数组中的主要内容,如果未能解决你的问题,请参考以下文章

将文本文件中的数据读取到结构数组中

从文件中读取文本到无符号字符数组

将文本文件中的信息读取到文本文件中的 3 个不同数组中(c++)

如何从文本文件创建二维数组并在 c 中打印到新文件

如何读取文本文件并将其行添加到 Java 中的数组中?

从文本文件中读取数据并将数据插入到数组中