gpt4 book ai didi

c++ - ofstream如何以二进制方式将NULL写入文件?

转载 作者:行者123 更新时间:2023-11-28 07:59:31 24 4
gpt4 key购买 nike

我正在维护一个 C++ 方法,我的一个客户遇到了问题。该方法应该将一系列标识符写出到一个由新行分隔的文件中。然而,在他们的机器上,该方法以某种方式将一系列 NULL 写入文件。在二进制编辑器中打开文件显示它包含全零。

我不明白为什么会这样。我试过分配空字符串和第一个字符设置为 0 的字符串。创建文件没有问题,只需向其中写入标识符即可。

方法如下:

void writeIdentifiers(std::vector<std::string> IDs, std::string filename)
{
std::ofstream out (filename.c_str(), std::ofstream::binary);

if (out.is_open())
{
for (std::vector<std::string>::iterator it = IDs.begin();
it != IDs.end();
it++)
{
out << *it << "\n";
}
}

out.close();
}

我的问题:您是否可以提供任何可能的输入来创建一个包含 NULL 值的文件?

最佳答案

是的,下面的代码很清楚地写入了一系列 NULL 字节:

std::vector<std::string> ids;
std::string nullstring;
nullstring.assign("\0\0\0\0\0\0\0\0\0\0", 10);
ids.push_back(nullstring);
writeIdentifiers(ids, "test.dat");

因为 std::string 容器存储字符串长度,所以它不一定能像普通的 C(空终止)字符串一样使用。在这里,我分配了一个包含 10 个 NULL 字节的字符串。然后输出这些,因为字符串长度为 10。

关于c++ - ofstream如何以二进制方式将NULL写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11873645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com