gpt4 book ai didi

c++ - Golang 中 binary.write 的 C++ 等价物是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:58 24 4
gpt4 key购买 nike

我正在从事 C++ 项目,该项目采用了 golang 项目的许多想法。
我没有正确理解 documentation 中的 binary.write 是如何工作的以及如何在 C++ 中复制它。我在我的项目中停留在这一行。

binary.Write(e.offsets, nativeEndian, e.offset)

e.offsets的类型是*bytes.Buffer,e.offset是uint64

最佳答案

在 C++ 标准库中,通常由您来处理端序问题。所以让我们暂时跳过它。如果你只是想将二进制数据写入一个流,比如一个文件,你可以这样做:

uint64_t value = 0xfeedfacedeadbeef;
std::ofstream file("output.bin", ios::binary);
file.write(reinterpret_cast<char*>(&value), sizeof(value));

转换是必要的,因为文件流处理 char*,但您可以向其写入您喜欢的任何字节流。

您也可以用这种方式编写整个结构,只要它们是“普通旧数据”(POD)。例如:

struct T {
uint32_t a;
uint16_t b;
};

T value2 = { 123, 45 };
std::ofstream file("output.bin", ios::binary);
file.write(reinterpret_cast<char*>(&value2), sizeof(value2));

回读这些内容与使用 file.read 类似,但如前所述,如果您真的关心端序,那么您需要自己处理。

如果您正在处理非 POD 类型(例如 std::string),那么您将需要处理更复杂的数据序列化系统。如果需要,有许多选项可以解决这个问题。

关于c++ - Golang 中 binary.write 的 C++ 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630141/

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