c++ - 存储 NUL 字符 (ASCII 0)

标签 c++ string char fstream null-character

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

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

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

最佳答案

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

关于c++ - 存储 NUL 字符 (ASCII 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848093/

相关文章:

c++ - 形状中的 Flash "CurveTo"和 "LineTo"

C++ Socket recv()顺序错误

Java : regex split() based on 2 delimiters

c++ - 仅使用 char 变量输入的第一个字符

c++ - 如何在 QT Creator 中关闭 g++ 中的 unicode 标志?

c++ rapidjson 解析 CURLOPTS 内容的错误

java - 将 int 转换为 string 并返回

string - 如何将 $var 的内容与 Fish shell 中的已知字符串进行比较

c - 使用 for 循环和 switch 语句编写字符计数器

c++ - char* 和 char[] 数组错误