C++输入(2):文件读取

记录以文件方式读取数据。

如从文件Data.txt中读取数据,文件内容如下:

0 0
3 8
2 2
1 1
5 3
4 8
6 3
5 4
6 4
7 5


思路:先通过文件的行数,得到样本个数,再建立动态数组,逐个读取数据。


变量定义:

#define MAX_SAMPLE_NUM 100    // 最大样本个数  
double **SAMPLE;              // 样本集  
int SAMPLE_NUM = 0;           // 样本个数  
int NUMBER = 2;               // 维数  

// 获取文件的行数
int countLines(char *filename)
{
	ifstream File;
	int n = 0;
	string temp;
	File.open(filename, ios::in);  //ios::in 表示以只读的方式读取文件
	if (File.fail())  //文件打开失败:返回0
	{
		return 0;
	}
	else  //文件存在,返回文件行数
	{
		while (getline(File, temp))
		{
			n++;
		}
		return n;
	}
	File.close();
}

// 文本读取训练样本
void loadSample(char *filename)
{
	SAMPLE_NUM = countLines(filename);  //获取行数

	string temp;
	int i, j;
	SAMPLE = new double*[SAMPLE_NUM];
	for (i = 0; i<SAMPLE_NUM; i++)
	{
		SAMPLE[i] = new double[NUMBER];
	}

	ifstream file;
	file.open(filename, ios::in);  //ios::in 表示以只读的方式读取文件
	if (file.fail())  //文件打开失败
	{
		cout << "Can't open file!\n";
		return;
	}

	cout << "从" << filename << "读取数据成功!\n";
	for (i = 0; i < SAMPLE_NUM; i++)
	{
		for (j = 0; j < NUMBER; j++)
		{
			file >> SAMPLE[i][j];
		}
	}

	file.close();
}

操作文件时,要声明#include <fstream>,用ifstream输入流读取文件,用ofstream输出流写入文件。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值