1

我用 C++ 创建了一个程序,提示用户输入文件名和请求的文件大小。程序检查请求的文件大小是否大于实际文件大小,然后在文件末尾添加空字符(带有 code 的字符0),直到达到请求的文件大小。
我已经这样做了(使用 fstream):

for (blah blah) {
    file << '\0'; // ('file' is an fstream object)
}

它就像我想要的那样工作。我知道这是一个糟糕的代码,因为它可能会通过向它发送许多调用来折磨硬盘(顺便说一下它很慢)。这只是出于测试原因。然后,由于这个问题,我决定创建一个存储 NUL 字符的变量并将整个变量一次保存到文件中(而不单独保存每个字符)。
然后问题出现了......因为 NUL 字符(也称为空终止符)终止了字符串,我无法以任何方式存储这些零。
我尝试了一个字符数组、一个字符串甚至一个字符串流,但都没有奏效(关于字符串流有一些有趣的地方,当我使用它时,文件的内容看起来像这样:)0x47c274。无论如何,它并没有像我预期的那样工作。
有没有存储空字符数组的有效方法?

4

2 回答 2

3

将它们存储在字符数组中并使用ostream::write将数组写入文件。

于 2010-10-03T00:47:27.923 回答
2

这是一个例子:

#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
  ofstream fout("pokemon");
  char buffer[1000];
  std::fill(buffer, buffer + 1000, '\0');
  fout.write(buffer, sizeof(char) * 1000);
  return 0;
}
于 2010-10-03T00:47:47.843 回答