C++ 从TXT文件中一行一行的读取数据并且保存到数组中

C++ 从TXT文件中一行一行的读取数据并且保存到数组中

 

这里使用了vector数组,以及new 动态数组,组成二维数组。

fscanf(fp,"%lf", &rowArray[i]):获取文件中数据,并将其赋值给 rowArray[i],"%lf" 为双精度

fscanf函数详解,参考:https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/107151385

 

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

// 功能:将filename 中的数据(共cols列)读取到_vector中,_vector可视为二维数组
int read_scanf(const string &filename, const int &cols, vector<double *> &_vector)
{
	FILE *fp = fopen(filename.c_str(), "r");
	bool flag = true;
	int i = 0;
	if (!fp) 
	{ 
		cout << "File open error!\n"; 
		return 0; 
	}

	while (flag)
	{
		double *rowArray = new double[cols]; //new一个double类型的动态数组

		for (i = 0; i < cols; i++) //读取数据,存在_vector[cols]中
		{
			if (EOF == fscanf(fp,"%lf", &rowArray[i]))
			{ 
				flag = false; 
				break; 
			}
			//输出rowArray存入的数据
			//cout << rowArray[0] << " " << rowArray[1] << " " << rowArray[2] << " " << rowArray[3] << endl;
		}
		if (cols == i) //将txt文本文件中的一行数据存入rowArray中,并将rowArray存入vector中
			_vector.push_back(rowArray);
	}
	fclose(fp);
	return 1;
}
int  main()
{
        string file ="test.txt";
	//txt文件中有4列
	int columns = 4;
	vector<double *> output_vector;
	if (!read_scanf(file, columns, output_vector))
	{
		return 0;
	}
		
	//output_vector可视为二维数组;输出数组元素:
	int rows = output_vector.size();
	for (int i = 0; i < rows; i++)
	{
		for (int j = 0; j < columns; j++) 
		{ 
			cout << output_vector[i][j] << " "; 
		}
		cout << endl;
	}

	system("pause");
	return 0;
}

test.txt中的数据为:

8 0 3 2
8 0 3 25

输出结果为:

 

fscanf函数详解,参考:https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/107151385 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章