C 如何将二进制文件的一部分复制到新文件
C++ How To Copy Part of A Binary File To A New File?
我有一个长二进制文件作为函数的输入。我可以将所有数据复制到新文件,如下:
void copyBinaryFile(string file){
const char* fileChar = file.c_str();
ifstream input(fileChar, ios::binary);
ofstream output("/home/my_name/result.img", ios::binary);
copy(istreambuf_iterator<char>(input),
istreambuf_iterator<char>(),
ostreambuf_iterator<char>(output)
);
}
这对于一次复制整个文件的功能正常,但是,我实际想做的是将第一个二进制文件的几个非连续的块写入输出文件,即。
for(int i = 0; i < chunkArray.size(); i++){
//copy 512 bytes from file1 to file2 starting at the chunkArray[i]th character
}
我该怎么做?如果有任何区别,这是在Linux上。
- 使用
ifstream::seekg
移动文件的读取位置。 - 读取文件中适当的字节数。
- 处理文件中读取的数据。
- 重复直到完成为止。
for(int i = 0; i < chunkArray.size(); i++){
//copy 512 bytes from file1 to file2 starting at the chunkArray[i]th character
input.seekg(chunkArray[i]);
char chunk[512];
input.read(chunk, 512);
// Deal with error, if there is one.
if (!input )
{
}
// Process the data.
}
似乎很简单..
让您的功能偏移到应该开始复制的来源以及许多要复制的字节中。然后从给定的起点复制许多字节。
相关文章:
- 从对象文件(.o)在macos上制作归档文件(.a文件)
- UE4 - Visual Studio在我从编辑器添加新的c ++文件后无法打开任何源文件 - UBT_COMPILED
- 有没有办法读取C++中的文件文件夹?
- 预处理器定义/添加新配置文件
- 错误C1083:无法打开包含文件.文件正确包含在代码中
- NDK 无法看到头文件 .h 文件
- 在 XCode 中快速创建和运行新的C++文件
- 在包含新CPP文件后的链接过程中,MSVC 错误
- 文件文件夹关联或归属
- Xcode-在项目导航器中创建新的C++文件-Order.h和.cpp-Order
- 如何以阻止的方式删除文件/文件夹
- 如何使用替代数据流添加新的文件属性
- 没有 /resetsettings 就无法运行 VS 2015 社区;在打开新项目时获取 CANTLOAD 库,并在新.cpp文件上崩溃
- 添加新头文件时出现C++错误LNK2005
- 在MFC中序列化为Unicode文本文件-文件头错误
- (Qt C++)如何从QTableView将所选文件/文件夹打印到文本文件中
- c++新手头文件问题
- 如何创建一个新的文件夹,如果它已经存在于c++中,则增加其索引
- 创建新文本文件C++时出现问题
- 为什么我无法更改新创建文件的"上次写入时间"?