Linux(g ++ 3.4.4)とMac(g ++ 4.0.1)の両方で、少し変更したコードを試しましたが、問題なく動作します。
Chuckに関しては、input.txtが存在しない場合、iffer.fail()はtrueです。あなたがそうではないと言うので...
もう1つの可能性は、予想とは異なる input.txtファイルです。数値が少なすぎると、ゼロ(または他のガベージ値)が表示されます。( iffer.eof()でテストできますが、末尾に空白がない場合(改行など)、最後の数値を読み取った後に(適切に)設定される可能性があります。したがって、 読み取る前にeof()をテストしてください!)
または、コードの他の場所にダングリングポインターを設定して、何かを不適切に破棄することもできます。コードの大きなチャンクを追加および削除すると、そのような問題が実際にどこにあるかを手動で「バイナリ検索」できる場合があります。
#include <iostream>
#include <fstream>
using namespace std;
#define SHOW(X) cout << # X " = \"" << (X) << "\"" << endl
int main()
{
int x = 0;
cin >> x;
ifstream iffer;
int numbers[12];
iffer.open("input.txt");
SHOW( iffer.fail() );
SHOW( iffer.eof() );
for (int i = 0; i < 12; ++i)
{
SHOW(i);
SHOW(numbers[i]);
iffer >> numbers[i];
SHOW(numbers[i]) << endl;
}
for (int i = 0; i < 12; ++i)
SHOW(numbers[i]);
SHOW( iffer.fail() );
SHOW( iffer.eof() );
}