ViktorProphet 2015-12-14 12:29 采纳率: 60%
浏览 1410
已采纳

C++读写文件遇到问题,无法使用stream准确复制exe格式的二进制文件

使用的代码如下:
其中:a是buffer,格式为char,栈数组(堆数组我也试过会出现同样的问题)
length_of_file是之前设定的要写入文件的长度

void MainProcessor::write()
{
std::cout << "Your new locked_file_name?(*.*)" << std::endl;
std::cin >> lock_it_file_name;
std::ofstream out(lock_it_file_name);
if (out.is_open())
{
for (int i = 0; i != length_of_file; i++)
out.write((char*)&a[i], sizeof(char));
out.close();
}
}
输入输出两个文件的出现错误的位的16进制对比如下
VS中的出现问题的位置:下标118
VS中的出现问题的位置:下标118
UE中的文件对比
源文件为B1-B.exe
源文件
复制之后的文件为asd.txt
复制之后的文件
可以明显的看出来,在70h-7的位置,出现了问题,向后偏移了一位,但是我在代码中是没有偏移的
单纯的write的方法也试过了,是会出现同样的问题的
具体的两个文件由于无法上传,所以请看以下的地址:
外部链接,两个文件的资源
还请各位大神帮忙解决问题!这个问题困扰了好久了!

  • 写回答

2条回答 默认 最新

  • ysuwood 2015-12-14 12:55
    关注

    ofstream 缺省是以文本格式打开文件,你用的write是二进制格式,所以你应该改为二进制格式打开:

        std::ofstream out(lock_it_file_name,std::ios::binary);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型