将fstream转换为float

时间:2013-06-04 00:45:12

标签: c++ ifstream

我正在尝试阅读该文件:

  

A = 10

     

B = 20.009

     

C是20.09,30.09

我转换遇到的float / int值的代码是:

int main ()
{
fstream file1, file2;
string line;
int N;
float W;
file1.open("input.txt");
file2.open("output.txt");
if (file1)  
  {
   while (getline( file1, line ))  
  {
    if(line[0] == 'A')
    {
        file1 >> W;
        cout << "A ="<<W; 
    }   
    else if(line[0] == 'B')
    {
        file1 >> W;
        cout << W; 
    }
  }
  file1.close();
 }
 else cout << "Can't open file\n";

 return 0;
 }

但我最终得到W = 0。我哪里错了?我必须使用fscanf ??

1 个答案:

答案 0 :(得分:1)

第一次调用getline后,文件现在指向A和B行之间的换行符。当您尝试提取浮点数时,它不会看到任何看起来像浮点值的值,它会触及换行符并退出尝试。

您需要将读取的每一行解析为行变量,或使用运算符&gt;&gt;直接从文件中解析它,就像你尝试使用浮点值一样。