使用的代码如下:
其中: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
UE中的文件对比
源文件为B1-B.exe
复制之后的文件为asd.txt
可以明显的看出来,在70h-7的位置,出现了问题,向后偏移了一位,但是我在代码中是没有偏移的
单纯的write的方法也试过了,是会出现同样的问题的
具体的两个文件由于无法上传,所以请看以下的地址:
外部链接,两个文件的资源
还请各位大神帮忙解决问题!这个问题困扰了好久了!