2012-06-28 38 views
0

我真的不明白为什么会发生这种情况。我试图打开一个文件来读取一些数据到我的程序中,但failbit被立即设置,移动错误信息似乎failbit实际上在我尝试input.open()之前设置。在代码中的未声明的变量是生活在别处(混乱,但以后会改进)全局下面是一个较大的项目有问题的功能:ifstream set声明失败位

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我与G的最新版本++在Cygwin上编译在Windows上7

回答

1

OK现在这个固定的自己:

  • Failbit似乎是在正交函数一些实现设置成相反,我切换到使用input.good(),因此一切都很好。
  • 我的程序中也存在一些逻辑错误,检查“=”部分,ifstream.get()以整数形式返回它的值,所以我需要将它们转换回字符进行比较。