0

在 c++ 中,我将如何读取包含 3 个浮点变量的文本文件,而不是作为字符串类型,而是作为浮点变量类型以供程序重用。

我试图使用 fscanf 函数并且只在文件的第一行读取它的结果。我如何告诉它使用分隔符,如 \n 行尾并让它继续处理文件的其余部分?

谢谢。

#include <cstdlib>
#include <math.h> //Include math functions
#include <iostream> //Stream to allow input/output
#include <fstream> //Stream class to read/write files

using namespace std;
string line = "0.0";
char str [80];
float f;
FILE * pFile;

int main () { 
    pFile = fopen ("C:\\Users\\Brian\\Documents\\NetBeansProjects\\CppApplication_2\\init_temps.txt","r"‌​);
    fscanf (pFile, "%f", &f);
    cout << f;
    return 0;
}
4

2 回答 2

1

根据您的代码,您似乎只阅读第一个数字。您应该迭代 3 次:

int i;

for(i = 0; i < 3; i++)
{
    fscanf(pFile, "%f", &f);
    cout << f << endl;
}

或者更好的是检查fscanf()的返回值,以更好地确定您是否已阅读全部内容。

另一方面,除非确实需要,否则您应该学习使用局部变量而不是全局变量。

希望这有帮助。

于 2013-06-06T01:21:06.193 回答
0

浮动文本

5.5
2.2
1.1

读取.cpp

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  string line;
  float sum = 0;
  ifstream myfile ("floats.text");
  if (myfile.is_open())
  {
    while ( myfile.good() )
    {
      getline (myfile,line);
      sum += ::atof(line.c_str());
    }
    myfile.close();
  }

  cout << sum << endl;

  return 0;
}

结果

./a.out
>> 8.8
于 2013-06-06T00:14:46.993 回答