C++中tellg和seekg

常用作读取计算文件的大小

long   pos   =   file.tellg();   //   得到文件指针当前指向的文件位置。

file.seekg(0,ios::beg);   //让文件指针定位到文件开头

file.seekg(0,ios::end);   //让文件指针定位到文件末尾

file.seekg(10,ios::cur);   //让文件指针从当前位置向文件末方向移动10个字节

file.seekg(-10,ios::cur);   //让文件指针从当前位置向文件开始方向移动10个字节

file.seekg(10,ios::beg);   //让文件指针定位到离文件开头10个字节的位置

下面是使用示例:

bool LoadBinary(const char * filepath, int startaddress, map<unsigned int, size_t>& data, long& size)
{
	bool result = true;
	std::vector<char>outdata;
	
	std::ifstream file(filepath, std::ios::binary | std::ios::in);
	if (!file.is_open()) {
		return  result= false;
	}

	file.seekg(0, std::ios::end);
	size = (long)file.tellg();
	outdata.resize(size);
	file.seekg(0, std::ios::beg);
	
	file.read(outdata.data(), size);
	file.close();
	for (int i = 0; i < size;i++)
	{
		data[startaddress] = outdata[i];
		startaddress++;
	}
	return result;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值