2016-11-30 32 views
-1

我被困在這裏有困難搞清楚爲什麼這個循環沒有將整數從文本文件插入到數組中。使用文件輸入來輸入整數

我有一個包含100個整數的文本文件,全部用空格分隔。我試圖將這些整數插入到一個數組中。然而,當我輸出,例如[2],它輸出0,讓我相信這些數字沒有被插入到數組中。

listFile.open("unsortedlist.txt"); 
cout << endl << "Unsorted list = "; 
for (int i = 0; i < 100; i++) 
{ 
     while (listFile >> individualNum) 
     { 
      a[i] = individualNum; 
      cout << individualNum << ", "; 
     } 
} 


cout << "\n" << a[1] << "\n"; 

回答

0

內環將努力從文件中讀取每一個數字。

然後將每個數字分配到a[i]。每次都是相同的數組元素。

在外循環的第一次迭代中,i爲0,所以代碼將讀取文件中的每個數字,將每個數字分配給a[0]

當內部循環到達文件末尾時,它將終止。然後,外部for循環將遞增i爲1,再次迭代並運行內部循環。由於整個文件已被讀取,內部循環將不會執行任何操作。對於陣列的其餘98個元素,它都不會做任何事情。

循環可能應該是,簡單地說:

for (int i = 0; i < 100; i++) 
     listFile >> a[i]; 

請記住,這將正常工作,當然,只有當是完全存在的文件中100個整數。

2

因爲while聲明,所有被成功讀取的數字只分配到a[0]。因此,a[0]的最終值是最後一個有效輸入,而沒有任何內容被分配給a的任何其他元素。

您可以使用類似:

for (int i = 0; i < 100 && listFile >> individualNum; i++) 
{ 
    a[i] = individualNum; 
    cout << individualNum << ", "; 
}