使用的代碼如下:
其中: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的方法也試過了,是會出現同樣的問題的
具體的兩個文件由於無法上傳,所以請看以下的地址:
外部鏈接,兩個文件的資源
還請各位大神幫忙解決問題!這個問題困擾了好久了!
ofstream 缺省是以文本格式打開文件,你用的write是二進制格式,所以你應該改為二進制格式打開:
std::ofstream out(lock_it_file_name,std::ios::binary);