急!c++如何从文件中读取二进制形式存储的数字?
我的程序大致是这样的:(头文件什么的省略了。。)shorti=256;ifstreamin_stream;ofstreamout_stream;out_stream.op...
我的程序大致是这样的:(头文件什么的省略了。。)
short i=256;
ifstream in_stream;
ofstream out_stream;
out_stream.open("tmp.txt", ios::binary);
//以二进制形式写入i
out_stream.write((char*)(&i),sizeof(i));
in_stream.open("tmp.txt", ios::binary);
short k;
//读取k
in_stream.read((char*)(&k),sizeof(k));
cout<<k<<endl;
编译运行后发现存储i成功,文件中是0100
但是读到的k确是16387!不知道是什么原因呀。。。请大家帮帮忙吧。。。
不胜感激!
恩确实是忘记关闭了,谢谢大家:) 我以后会注意这个问题嗒!
大家都说的对。。。不知道分数该给谁好啊。。。投票吧。。。:P 展开
short i=256;
ifstream in_stream;
ofstream out_stream;
out_stream.open("tmp.txt", ios::binary);
//以二进制形式写入i
out_stream.write((char*)(&i),sizeof(i));
in_stream.open("tmp.txt", ios::binary);
short k;
//读取k
in_stream.read((char*)(&k),sizeof(k));
cout<<k<<endl;
编译运行后发现存储i成功,文件中是0100
但是读到的k确是16387!不知道是什么原因呀。。。请大家帮帮忙吧。。。
不胜感激!
恩确实是忘记关闭了,谢谢大家:) 我以后会注意这个问题嗒!
大家都说的对。。。不知道分数该给谁好啊。。。投票吧。。。:P 展开
3个回答
展开全部
//楼主,你只是忘记关闭了,你的程序不用大改的。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
short i=256;
ifstream in_stream;
ofstream out_stream;
out_stream.open("tmp.txt", ios::binary);
//以二进制形式写入i
out_stream.write((char *)&i,sizeof(i));
out_stream.close();
in_stream.open("tmp.txt", ios::binary);
short k;
//读取k
in_stream.read((char*)&k,sizeof(k));
cout<<k<<endl;
in_stream.close();
return 0;
}
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
short i=256;
ifstream in_stream;
ofstream out_stream;
out_stream.open("tmp.txt", ios::binary);
//以二进制形式写入i
out_stream.write((char *)&i,sizeof(i));
out_stream.close();
in_stream.open("tmp.txt", ios::binary);
short k;
//读取k
in_stream.read((char*)&k,sizeof(k));
cout<<k<<endl;
in_stream.close();
return 0;
}
展开全部
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
short i=255;
fstream io_stream;
io_stream.open("tmp.txt", ios::binary|ios::out);
//以二进制形式写入i
io_stream.write((char *)&i,sizeof(i));
io_stream.close();
io_stream.open("tmp.txt", ios::binary|ios::in);
short k;
//读取k
io_stream.read((char*)&k,sizeof(k));
cout<<k<<endl;
io_stream.close();
return 0;
}
#include <fstream>
using namespace std;
int main()
{
short i=255;
fstream io_stream;
io_stream.open("tmp.txt", ios::binary|ios::out);
//以二进制形式写入i
io_stream.write((char *)&i,sizeof(i));
io_stream.close();
io_stream.open("tmp.txt", ios::binary|ios::in);
short k;
//读取k
io_stream.read((char*)&k,sizeof(k));
cout<<k<<endl;
io_stream.close();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样写
#include<fstream.h>
#include<iostream.h>
#include <memory.h>
int main()
{
short i=256;
char tmp[2];
ifstream in_stream;
ofstream out_stream;
out_stream.open("tmp.txt", ios::binary);
//以二进制形式写入i
memcpy(tmp,&i,sizeof(i));
out_stream.write(tmp,sizeof(i));
in_stream.open("tmp.txt", ios::binary);
short k;
//读取k
in_stream.read(tmp,sizeof(k));
memcpy(&k,tmp,sizeof(k));
cout<<k<<endl;
}
#include<fstream.h>
#include<iostream.h>
#include <memory.h>
int main()
{
short i=256;
char tmp[2];
ifstream in_stream;
ofstream out_stream;
out_stream.open("tmp.txt", ios::binary);
//以二进制形式写入i
memcpy(tmp,&i,sizeof(i));
out_stream.write(tmp,sizeof(i));
in_stream.open("tmp.txt", ios::binary);
short k;
//读取k
in_stream.read(tmp,sizeof(k));
memcpy(&k,tmp,sizeof(k));
cout<<k<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询