2014-11-23 140 views
0

我一直在玩這個,但我沒有得到任何幫助。我正在嘗試從txt文件讀取整數列表到一個數組(1,2,3,...)。我知道將被讀取的整數的數量是100,但我似乎無法填充數組。每次我運行代碼本身時,它僅爲所有100個整數存儲值0。有什麼想法嗎?從文本文件讀入數組

//Reads the data from the text file 
void readData(){ 
ifstream inputFile; 
inputFile.open("data.txt"); 

if (!inputFile){ 
    //error handling 
    cout << "File can't be read!"; 
} 
else{ 
    int a; 
    while (inputFile >> a){ 
     int numbers; 
     //Should loop through entire file, adding the index to the array 
     for(int i=0; i<numbers; i++){ 
      DataFromFile [i] = {numbers}; 
     } 
    } 
} 

}

回答

0

要閱讀從istream的一個整數,你可以做

int a; 
inputFile >> a; 

這是你在你的while循環做什麼。 雖然對於流中每個整數(在文件中)您都將執行遺囑塊,但這是好事

這個inputFile >> a一次讀取一個整數。如果放入測試(如果/當),真值將回答「問題是否已讀取?」這個問題。

我沒有得到你想要和你做什麼number變量。正如不是由你初始化它lloks喜歡它的價值0這最終使得福爾循環無法運行

如果你想讀的正是100整數,你可以做

int *array = new int[100]; 
for (int i=0; i<100; ++i) 
    inputFile >> array[i]; 

否則你能保持一個計數器

int value; 
int counter = 0; 
while(inputFile >> value && checksanity(counter)) 
{ 
    array[counter++] = value; 
} 
+0

謝謝您的回答。第一種方法工作,現在我的程序已經啓動並運行:) – user3061066 2014-11-24 00:54:10

0

你是不是讀a到您numbers,更改代碼這樣:

if (!inputFile){ 
    //error handling 
    cout << "File can't be read!"; 
} 
else{ 
    int a; 
    while (inputFile >> a){ 
     //Should loop through entire file, adding the index to the array 
     for(int i=0; i<a; i++){ 
      DataFromFile [i] = a; // fill array 
     } 
    } 
} 

如果您是通過文件循環,陣列將使用新的覆蓋號碼每次。這可能不是你想要做的。你可能想用100個不同的號碼填寫100個地點?在這種情況下,使用下面的代碼:

if (!inputFile){ 
    //error handling 
    cout << "File can't be read!"; 
} 
else{ 
    int i = 0; 
    while (inputFile >> a){ // Whilst an integer is available to read 
     DataFile[i] = a; // Fill a location with it. 
     i++;    // increment index pointer 
    } 
}