c++ - 将 const 模式写入特定大小的文件

标签 c++ io fstream binaryfiles

我需要编写 C++ 代码来打开一个二进制文件并向其中写入 5 MB 的“1”。

目前我的代码是:

#define BYTES_BUFFER_SIZE_5MB (1024*1024*5)

static char buffer[BYTES_BUFFER_SIZE_5MB];
memset(buffer, 0xff, BYTES_BUFFER_SIZE_5MB);
ofstream myFile ("data.bin", ios::out | ios::binary);
myFile.write(buffer, BYTES_BUFFER_SIZE_5MB);

是否有类似 memset 的方法来写入文件,这样我就可以避免使用缓冲区?

最佳答案

我认为我们可以使用流操纵器在一行中完成此操作:

fout << std::setw(BYTES_BUFFER_SIZE_5MB - 1) << std::setfill(char(0xFF)) << char(0xFF);
  • setw设置要写出的字节数
  • setfill使其默认写出0xFF

这样我们就不需要缓冲区了。唯一的风险是,如果您想写入大量字节,则在调用 setw 时可能会出现 int 溢出的风险。

关于c++ - 将 const 模式写入特定大小的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47311651/

相关文章:

c - 读写 C 系统调用是否使用缓冲区?

c++ - 如何编写带有自定义标志的 ostream 运算符

ruby - 将整个文本文件作为单个字符串读取的合理方法是什么?

c++ - 是否在两个不同的 fstream 未定义行为中打开相同的文件?

c# - 即使没有 windows 也能运行软件

c++ - 将图像读取为二进制文件

c++ - 使用 ifstream 在两个线程中处理同一个文件

c++ - 从 C++ 中的二进制文件中读取 32 位整数?

c++ - const 变量的 static_assert

c++ - 什么是 C++11 中的 lambda 表达式?