首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何创建一个新的二进制文件并填充一个常量值?

如何创建一个新的二进制文件并填充一个常量值?
EN

Stack Overflow用户
提问于 2018-06-05 22:31:09
回答 2查看 1.2K关注 0票数 0

我正在使用cstdio函数创建一个空的二进制文件,并需要将其初始化为一个特定的字节值(可以是零,但不是必须的)。

代码语言:javascript
复制
FILE* file = std::fopen("path/to/file", "wb+");

有没有办法用一个值填充整个文件,或者创建并填充一个缓冲区,然后使用std::fwrite连续填充文件是唯一的选择?就像这样

代码语言:javascript
复制
std::ffill(byteValue, sizeof(byteValue), fileSize, file);

有特定于平台的解决方案是可以的(我的目标是windows和linux)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-06 05:48:28

使用C++ iostreams,这是非常简单的:

代码语言:javascript
复制
std::ofstream out("path/to/file", std::ios::binary);

char byteValue = '\0'; // or whatever

std::fill_n(std::ostreambuf_iterator<char>(out), fileSize, byteValue);

但是,如果fileSize真的很大,您可能更喜欢使用std::ofstream::write --它的速度会快很多。

票数 2
EN

Stack Overflow用户

发布于 2018-06-05 22:47:21

一种选择是将文件映射到内存,并在该内存上使用memset。但填充缓冲区并将其多次写入文件将是一种更容易的解决方案,并且与平台无关。mmap和CreateFileMapping是特定于平台的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50702666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档