在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;
}
答案 0 :(得分:1)
根据您的代码,您似乎只是阅读第一个数字。你应该迭代3次:
int i;
for(i = 0; i < 3; i++)
{
fscanf(pFile, "%f", &f);
cout << f << endl;
}
或者更好的是检查 fscanf()的返回值,以便更好地决定是否已经全部阅读。
另一方面,你应该学会使用局部变量而不是全局变量,除非确实需要。
希望这会有所帮助。
答案 1 :(得分:0)
floats.text
5.5
2.2
1.1
read.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