我真的不明白为什么会发生这种情况。我正在尝试打开一个文件来读取我的程序中的一些数据,但是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失败。
我假设我做了一些非常愚蠢的事情,但现在已经有一段时间了。
P.S我正在使用最新版本的gg在Windows 7上的cygwin上进行编译。
答案 0 :(得分:1)
现在好了解决这个问题: