#include "stdafx.h"
#include <fSTREAM>
using namespace std;
int main(int argc, char* argv[])
{
ofstream of("1.bin");
of<<0.123<<" \n "<<0.234<<" "<<12;
of.close();//一定要关闭,不然数据没有写进去
double d[10];
for(int i=0;i<10;i++)
*(d+i)=3.1415;
ifstream ifs("1.bin");
//f.unsetf(ios::skipws);可以使用这个不跳过空格换行,但要写入char中不能把顺序弄错了
ifs>>d[0]>>d[1];//只跳过了数据前面的空格换行,后面的还在,所以不是文件末尾。
printf("%f %f\n",d[0],d[1]);
if (ifs.eof())//不取数据不知道是不是文件尾,哪怕文件是空的
printf("eof\n");
//可以再取一次
ifs>>d[3];
if (ifs.eof())
{
if (d[3]!=3.1415)
printf("取出最后一个数到达文件末尾\n");
else
printf("取出文件的空白字符,没有数据,到达文件末尾\n");
}
ofstream of1("1.bin",ios::binary);
of1<<1<<2<<3<<" ";
of1.close();//一定要关闭,不然数据没有写进去
ifstream ifs1("1.bin",ios::binary);
int iData[10]={0};
for (i=0;i<10;i++)
{
ifs1>>iData[i];//没有空格或者换行一次性取出123
printf("%d\n",iData[i]);
if (ifs1.eof())
{
printf("eof\n");
break;
}
}
//写二进制文件
double db[100];
for (i=0;i<100;i++)
*(db+i)=3.1415*i;
printf("%f %d\n",db[99],sizeof(db));
char*c=new char[sizeof(db)];
memcpy(c,db,sizeof(db));
ofstream ofs12("db.bin",ios::binary);//字节读取一定要是二进制的否自不能读取
ofs12.write((const char*)db, sizeof(db));
ofs12.close();
db[99]=0;
ifstream ifs12("db.bin",ios::binary);
ifs12.read((char*)db, sizeof(db));
ifs12.close();
printf("%f %d\n",db[99],sizeof(db));
return 0;
}