1、按行读,数据逗号隔开(这种是C语言下的)
int loadResults(string file_name) {
FILE *fp = fopen(file_name.c_str(), "r");
if (!fp)
return poses;
while (!feof(fp)) {
//第四个bug,必须是double,因为fscanf是 %lf是double类型的!!!
double a[8];
//三个bug,一个是分隔符用空格隔开,一个是长度没有改成8,一个是a[4]的&忘加了
//%lf是类型,','是分隔符
if (fscanf(fp, "%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf",
&a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7]
) == 8)
{
}
}
fclose(fp);
return 1;
}
2、使用fstream
首先包含头文件#include<fstream>,只有这一个头文件,虽然头文件只有一个,但是有三个类ifstream、ofstream、fstream。
注意这里并不像输入输出头文件一样有三个头文件:输入的istream、输出的ostream,以及同时有输入输出的ostream。如下图所示:
//文件data.txt中的内容(每行两个数据,字符串和数字之间逗号或者空格隔开)
//ab: 1 cb: 2
//ef: 3 gh: 4
#include<fstream>
ifstream fin;
string s1,s2;
int a1,a2;
//使用文件流处理输出到各变量
fin>>s1>>a1>>s2>>a2;
3、使用sstream字符串流处理头文件,先读取整个一行字符串数据,然后放入字符串流处理头文件中,最后使用字符串流处理输出至变量(但是这个字符串流处理在针对文本文件输入是是多次一举了,直接使用文件流处理就可以了,但是它的一个更广泛的用处是以其他方式得到了一个字符串,想解析这个字符串,这时候用sstream就特别方便了)
//文件data.txt中的内容(每行两个数据,字符串和数字之间逗号或者空格隔开)
//ab: 1 cb: 2
//ef: 3 gh: 4
//文件流处理头文件
#include<fstream>
//字符串流处理头文件
#include<sstream>
//从文件读取一行的字符串数据
string s;
fstream fin("data.txt");
getline(fin,s);
//将字符串内容拷贝到流处理对象中
stringstream sstr(s);
//使用字符串流处理输出到各变量
string s1,s2;
int a1,a2;
sstr>>s1>>a1>>s2>>a2;