我的目标是打开一个二进制文件,删除第7个字节,然后将其保存到新文件中。
这是我到目前为止所做的:
#include <fstream>
#include <iterator>
#include <vector>
#include <iostream>
void main()
{
std::ifstream input( "C://Desktop//data.bin", std::ios::binary );
std::ofstream output( "C://Desktop//outdata.bin", std::ios::binary );
std::vector<char> buff(std::istreambuf_iterator<char>(input), {});
std::vector<char>::iterator it;
int i = 0;
for(it = buff.begin() ; it != buff.end() ; it++){
if((i-6)%8 == 0){
buff.erase(it);
i++;
}
i++;
}
output.write(&buff[0], buff.size() * sizeof(char));
//Note that instead of the last line of code, I've also tried without
success :
// std::ostreambuf_iterator<char> output_iterator(output);
//std::copy(buff.begin(), buff.end(), output_iterator);
}
我的第一个问题是,当我从文件中读取buff
的值后,在其末尾添加了“ x”。
文件(.txt转换为bin):
aaacccboaaacccboaaacccbo
使用std::cout<<&buff[0]<<std::endl;
:
aaacccboaaacccboaaacccbox
然后,每删除第7个元素,buff
就会显示为:
aaacccoaaacccoaaacccoooox
因此,每个“ b”均已正确删除,但末尾添加了等量的“ o”。
最后,当我尝试保存文件时,该文件在桌面上创建,但为空。