同一个函数里面打开两个文件流出错

striveforit 2009-08-21 10:14:07
同一个函数里面可以打开两个不同的文件流吗?
下面这一段编译没问题,执行时出现内存不能read,这怎么一回事?
我想对两个文件进行读操作,不能在同一个函数里面执行吗?
求解!!!!

void File<T,T1,T2>::Printmainfile(char* fn1,char* fn3)
{
cout<<"仅供浏览,打开记录所指文件请用查找功能\n";
ifstream fin(fn1,ios::in|ios::binary);
if(!fin)
{cerr<<fn1<<' '<<"没有找到!"<<endl;exit(1);}
ifstream f3(fn3, ios::in|ios::binary);
if(!f3)
{cerr<<fn3<<' '<<"没有找到!"<<endl;exit(1);}
f3.seekg(0,ios::end);

int b1=sizeof(T1);
T1 x;

fin.read((char*)&x,b1);//估计是这一步导致内存不能read

f3.close();
fin.close();
}
...全文
100 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wesleyluo 2009-08-21
  • 打赏
  • 举报
回复
不用文件流了,直接用C的read,write读写。
striveforit 2009-08-21
  • 打赏
  • 举报
回复
goodname的确名副其实哈哈,按我那样子存入的二进制文件,该怎么读取记录好呢?
goodname 2009-08-21
  • 打赏
  • 举报
回复
struct ElemType{
int num; //记录号
char type; //l为文件链接;t为文本形式
KeyType key; //关键字域
long length; //内容域长度
string content; //内容域

};


ofs.write((char*)&e,size); //先写入前四项内容和content的指针信息
ofs.write(e.content.c_str(),e.content.size()+1);//读string类里面的内容
,到时读的时候再按开头的方式读,这样子对吗?

--------
这种包含string,或者vector等成员的结构是无法通过fin.read一次读入的。

fin.read将第一个参数看作是连续的内存单元,读入的长度是第二个参数。

striveforit 2009-08-21
  • 打赏
  • 举报
回复
程序里面我只做读操作
fstream fin(fn1,ios::in|ios::out|ios::binary);
fstream f3(fn3, ios::in|ios::out|ios::binary);
改成fstream了,还是内存不能read
kakashi0309 2009-08-21
  • 打赏
  • 举报
回复
ifstream 和 ofstream 有啥区别 ?? 换个试试

你试下fin.write() 还有问题?
striveforit 2009-08-21
  • 打赏
  • 举报
回复
这最郁闷了,单步没问题啊
Paradin 2009-08-21
  • 打赏
  • 举报
回复
调试下

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧