gpt4 book ai didi

c++ - 将 (void*) 指向的对象转换为 char[]

转载 作者:行者123 更新时间:2023-11-30 01:44:46 24 4
gpt4 key购买 nike

我正在尝试将 void* 指向的一些对象(大小已知)按位转换为 C++ 中的 char 数组。我正在考虑将 union 与 char 数组一起使用,这样我就不必太担心转换了。但是,由于对象的类型未知,我不知道如何定义这个 union 。

只是想知道是否有其他更好的方法来处理这个问题?

PS:编辑以避免混淆。例如,一个整数可以转换为 4 个字符的数组。

谢谢!

最佳答案

在我放在评论中的链接中,接受的答案详细介绍了类型双关以及为什么不能在 C++ 中执行此操作。

您可以使用 reinterpret_cast 安全地检查任何带有 char*(有符号或无符号)的对象。

char* ptr = reinterpret_cast<char*>(&object);
for (std::size_t x = 0; x < sizeof(object); ++x)
std::cout << ptr[x]; //Or something less slow but this is an example

如果你真的想将对象移动到 char[] 中,你应该使用 std::memcpy

关于c++ - 将 (void*) 指向的对象转换为 char[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35515702/

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