C++下按二进制读写文件

今天学会了如何用C++进行二进制存储文件,和seven在QQ上讨论了很久,一直没有做出来,后来发现是一个函数的问题。


估计很多人都知道用

ofstream out("test.binary",ios::binary|ios::out);	

和这个

ifstream in("test.binary",ios::binary|ios::in);

这两个是设定文件的读取和写入的方式,这里是按照二进制,不过有一点很重要,就是不能直接用out <<  和 in>>,需要用read 和write函数,下面是个简单的例子

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

void  Save()
{
	ofstream out("test.binary",ios::binary|ios::out);	


	short b=-189;

	out.write((const char*)&b,sizeof(b));

	float a;

	for(int i=0;i<10;i++)
	{
		a=0.128937;

		out.write((const char*)&a,sizeof(a));
	}
	out.close();

	out.clear();
}

void Load()
{

	ifstream in("test.binary",ios::binary|ios::in);



	short u1;

	in.read((char*)&u1,sizeof(u1));

	cout<<u1<<endl;

	for(int i=0;i<10;i++)
	{
		float aa;

		in.read((char*)&aa,sizeof(aa));

		cout<<aa<<endl;
	}

	in.close();

	in.clear();


}

int main()
{
	int upset;

	Save();
	Load();

	cin>>upset;

	return 0;
}


反正这样存放肯定是没有问题的,读出也没有问题,忙了一天,居然就这么简单,还让我费老大劲考虑用什么byte数组,什么类型转换,真是无语。

好吧,以后别再问seven这种弱智问题了。


 

你可能感兴趣的:(C++下按二进制读写文件)