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 行の間の改行を指すようになります。フロートを抽出しようとすると、浮動小数点値のように見えるものは何も表示されず、改行にヒットして試行を終了します。

line 変数に読み込んだ各行を解析するか、または operator>> を使用して、浮動小数点値を処理しようとしているように、ファイルから直接解析する必要があります。

于 2013-06-04T01:03:56.053 に答える