なぜこれが起こっているのか、私にはよくわかりません。ファイルを開いてプログラムにデータを読み込もうとしていますが、failbitがすぐに設定されます。エラーメッセージを移動すると、input.open()を試行する前にfailbitが実際に設定されているようです。コード内の宣言されていない変数は、他の場所に存在するグローバルです(乱雑ですが、後で改良されます)。より大きなプロジェクトの問題のある関数は次のとおりです。
int read_input()
{
ifstream input;
string value;
int file_complete=0;
int count=0;
if(input.failbit)
printf("Really?\n");
input.clear();
input.open("Input.txt");
while(!file_complete)
{
if(input.failbit)
{
printf("Reading in set-up value number %d failed.", count+1);
getchar();
return 1;
}
else if(input.eofbit)
{
file_complete=1;
}
if(input.get()=='=')
{
getline(input, value);
switch(count)
{
case 0:
n_loci=atoi(value.c_str());
count++;
break;
case 1:
n_founders=atoi(value.c_str());
count++;
break;
case 2:
n_self=atoi(value.c_str());
count++;
break;
// Add more cases later
}
}
}
input.close();
return 0;
}
私にとってこのプログラムは次のようになります。
本当に?設定値1の読み込みに失敗しました。
私は非常に愚かなことをしたと思いますが、かなり長い間これに取り組んできました。
PS私はWindows7上でcygwin上のg++の最新バージョンでコンパイルしています。