簡體   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