[英]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.