关于用标准C++库的fstream来实现文件拷贝的问题

oldgameman 2003-05-15 11:38:22
要建立两个fstream来实现文件拷贝:
fstream s_file通过binary方式打开源文件;
fstream d_file通过binary方式打开目标文件;
因为考虑到源文件可能非常大(几百M),建立缓冲来存放二进制流不现实,所以考虑在for循环中用源文件指针对目标文件指针所指向的地址赋值的方式来实现拷贝。比如类似以下伪代码:
for(not s_file.eof())
{
*d文件指针=*s文件指针;
s文件指针++;
d文件指针++;
}

不知道fstream对象有没有类似的指针实现方式?

...全文
151 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
meteor135 2003-05-17
  • 打赏
  • 举报
回复
楼上实现最简洁!
windoze 2003-05-17
  • 打赏
  • 举报
回复
std::ifstream is("in",ios::binary);
std::ofstream os("out",ios::binary);
os << is.rdbuf();
ghtsao 2003-05-15
  • 打赏
  • 举报
回复
输错了:
s_file("sourcefile",ios::in|ios::binary);
d_file("destfile",ios::out|ios::binary);
应当是:
s_file.open("sourcefile",ios::in|ios::binary);
d_file.open("destfile",ios::out|ios::binary);
ghtsao 2003-05-15
  • 打赏
  • 举报
回复
#define BLOCKSIZE 4096

#include <fstream.h>

fstream s_file;
fstream d_file;

s_file("sourcefile",ios::in|ios::binary);
d_file("destfile",ios::out|ios::binary);

BYTE buffer[BLOCKSIZE];
int len;
while(!s_file.eof())
{
len = s_file.read(buffer,BLOCKSIZE);
d_file.write(buffer,len);
d_file.flush();
};
shornmao 2003-05-15
  • 打赏
  • 举报
回复
http://www.cpphelp.net/faq/Q5-1-2.html

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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