2017-02-09 7 views
-4

ファイルから配列を読み込もうとしています。しかし、私は私の配列のサイズ= 5を割り当てています。ファイルの大きさにかかわらず、それはサイズとそれを停止してから、私はすべての要素をコピーしたい場合は、サイズ= 10の新しい配列に読み込まれ、私の新しい配列にファイルを完全に読み込んでいます。新しい配列がそのサイズの2倍になるたびに同じことをしてください。 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スタイルのアレイの容量を決定することはできません何かアドバイス。さまざまなサイズの試行を使用してこれを見つけました。 (あなたが見た様々な「間違った」答えが得られた理由を理解できるかどうかを確認する必要があります)

サイズとカウンタ変数を使って自分自身を把握するための唯一の方法ベクトルの利点の一つ厥

- それはあなたが も見

ためにすべてのことを行います: How do I determine the size of my array in C?

エクストラクレジット:のstd ::ベクトルの実装のソースを見つけて、それがない方法を見て、それは魔法です

関連する問題