无法读取文件中的数据,对其进行修改,然后将其保存到新文件中

时间:2019-03-21 23:23:21

标签: c++

我的目标是打开一个二进制文件,删除第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”。

最后,当我尝试保存文件时,该文件在桌面上创建,但为空。

0 个答案:

没有答案