2017-05-07 192 views
0

我對C++非常陌生,從學校得到了這個任務,現在我陷入了困境,因爲我無法使它工作,有些幫助將不勝感激。提前致謝。從文本文件讀取整數並將它們存儲到一個數組中

我有整數這樣一個文本文件:8 3 7 1 2 0

我需要創建程序讀取這些整數並將其存儲在數組中。程序檢查文本文件並計算出有多少整數,然後相應地創建所需大小的數組,然後使用文件中的整數填充該數組。我像這樣的東西來到了:

#include <iostream> 
#include <fstream> 
using namespace std; 

int main(){ 

    ifstream File("data.txt"); 
    int count; 
    File >> count; 
    int array[count]; 
    for(int i=0; i<count; i++){ 
     File >> array[i]; 
    } 

    cout<<"File contains: "<<count<<" integers"; 
    cout<<"Array of integers taken from the file: "; 

    for(int i=0; i<count; i++){ 
     cout<<array[i]; 
    } 
} 

出於某種原因,我count整數沒有得到任何價值,我檢查了,它只是一個零程序後,因此我的整個代碼將無法正常工作。

+1

使用'File.is_open()'查看是否打開文件成功。 – Jiahao

+0

嘗試檢查每個I/O操作(打開,每個讀取操作)是否實際成功。另外'int array [count]','count'是一個變量是無效的C++(如果你的編譯器接受它,它就是編譯器特定的擴展)。此外,從您描述的示例中,該文件不包含要讀取的後續整數的數量。 – Peter

+0

這將有助於瞭解其餘的讀取操作是否成功。 – hvanbrug

回答

0

如果提取失敗,則寫入零值並設置失敗位。如果提取的結果值太大或太小而不符合值,則會寫入std::numeric_limits<T>::max()std::numeric_limits<T>::min(),並設置失敗位標誌。

這來自operator>>的文檔std::ifstream。如您所見,如果提取失敗,則該變量設置爲0。爲什麼提取失敗?那麼,你永遠不會檢查文件是否打開,所以文件可能不存在並加載失敗。

但即使您的文件加載正確,文件中的第一個元素似乎並不是它中的整數量。如果不是,則必須讀取每個整數,並將它們存儲在動態數組中,因爲您不知道大小(如std::vector)。

+0

哦,所以它就是這樣,我必須使用矢量這一點,可惜我還沒有研究它們...... – RookiefromLit

0

變量長度數組不存在un C++。 使用vector<int>來存儲數據。

順便說一句,你可以使用:

System("pwd");//linux 

要檢查的工作路徑。

相關問題