0

我正在尝试读取文件:

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 吗?

4

1 回答 1

1

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

您需要解析读入行变量的每一行,或使用 operator>> 直接从文件中解析它,就像您尝试处理浮点值一样。

于 2013-06-04T01:03:56.053 回答