2017-02-09 231 views
-4

我試圖從文件讀入數組。但我分配我的數組大小= 5。無論文件有多大,它應該讀取,直到它的大小,然後停止,然後我想複製所有元素已被讀取到一個新的數組= 10,並刪除舊的one.Plus完全讀取文件到我的新陣列。每次新數組的大小應該是它的兩倍時,做同樣的事情。 qoustion是如何確定我的當前數組是否已滿?讓我們假設如何確定數組是否已滿

 ifstream in; 

     while (in.fail()) 
     { 
     cout << "Exit" << endl; 
     return 9; 
     } 
     int size =5; 
     int* array; 
     int* resize; 
     int inc=0; 
array = new int[size]; 
     while (in << *(array+inc)) 
     { 
      inc++; 
     /// here i want to detrmine if it's full to do the rest of code 
     } 

    PrintArray(resize,size) 

任何提示或提示。

如何讓這樣的工作。

while (in >> *(array+inc) 
     { 
      if (inc <=5) // if it reaches the size which is 5 
     { 
      for (int i=0; i<size i++) 
     { // to copy all elements to the new array 
     resize[i] = array[i] 
     }// delete the old array 
    delete[] array; 
    while (in >> *(resize+size)) // to keep reading the file where it's stoped 

     } 

    PrintArray(resize,size) // print it 
delete[] resize; // delete the new array and so on 
in.close(); 

任何意見

+1

你知道嗎?當'inc'是5時是滿的,是嗎? – immibis

+0

你沒有分配數組,你只是有一個指針指向一個隨機存儲器位置'int * array'。 –

+0

while(inc <= 5) – Muzy

回答

1

不能編程方式確定一個典型的動態分配的C風格陣列的容量。您通過使用各種sizeof嘗試發現了這一點。 (順便說一句,你應該看看你是否可以弄清楚爲什麼你會看到各種'錯誤'的答案)

要知道有多大和多少空間來跟蹤大小和計數器變量

那的載體的優勢之一 - 它所有爲你

還看到:How do I determine the size of my array in C?

附加題:找到一個std :: vector實現的來源,看看它是如何做它的魔力