由于在科研过程中,经常需要提取文件中的数据。这时候使用文件流ifstream去读取数据就比Excel处理数据快多了!
在ifstream中有两个内置的API均可读取文件流中的数据:get()和getline(char* buff, int count, char c)。 getline()的作用是根据指定的字符,将读取的单行文件内容分割成若干块。在读取到c这个字符时,或者是指定的字节数量count读取完时,会将之前读取的字符串保存在buff中。
搭配for循环,还有右运算符>>就可以将文件中想要提取的数据提取出来。
打开指定文件:
char filename[256] = "C:\\Users\\Administrator\\Desktop\\energy.txt";
std::ifstream inFile;
inFile.open(filename);
提取被’ : '间隔开的数据:
double dataX[10];
char Char1 = ':';
for (int i = 0; i < spinBox1.value(); ++i) //spinBox1.value()返回的值是3
inFile.getline(buff, 256, Char1);
inFile >> dataX[0];
运行程序,将提取到的数据保存在dataX[0]中。
在打开energy.txt后,文件的第一行内容为:
steps: 60;volFraction: 0.649000;Energyperparticle: 0.00000016910417860;gamma: -0.000000
得到的dataX[0]值:
1.69104e-07
实际上,我们如果需要在一行中读取字符或者其他类型的数据,只需要将double dataX[10]前面的数据类型改成char或许其他指定的类型,再根据分隔符Char1去读取。
不过,一般处理数据时,我们都是只需要double类型的数据就足够了。