我正在尝试阅读该文件:
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 ??
答案 0 :(得分:1)
第一次调用getline后,文件现在指向A和B行之间的换行符。当您尝试提取浮点数时,它不会看到任何看起来像浮点值的值,它会触及换行符并退出尝试。
您需要将读取的每一行解析为行变量,或使用运算符&gt;&gt;直接从文件中解析它,就像你尝试使用浮点值一样。