在 C++/CLI 中从非托管结构序列化到 Stream
我正在学习 C++/CLI,但遇到了一个问题。 我有一个看起来像这样的头文件,
typedef struct _DATA_INFO {
WORD ONE
WORD TWO
WORD THREE
} DATA_INFO
public ref class ManagedDataInfo
{
DATA_INFO* info;
public ManagedDataInfo()
{
info=new DATA_INFO();
}
public void Write(Stream^ stream)
{
// stream.Write(content of info)
// here i want to write content of info to stream
}
}
这里我想将 info 的内容复制到 Write 方法中的流中,但卡住了如何做到这一点。
I am learning C++/CLI and stuck with a problem.
I have a header file that looks like
typedef struct _DATA_INFO {
WORD ONE
WORD TWO
WORD THREE
} DATA_INFO
public ref class ManagedDataInfo
{
DATA_INFO* info;
public ManagedDataInfo()
{
info=new DATA_INFO();
}
public void Write(Stream^ stream)
{
// stream.Write(content of info)
// here i want to write content of info to stream
}
}
Here I want to copy the content of info to the stream in the Write method but stuck how to do that.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要此方法:Marshal.StructureToPtr。此方法会将结构转换为字节序列。然后您可以使用 Stream.Write 方法之一进行写入。
You need this method: Marshal.StructureToPtr. This method will convert structure to sequence of bytes. Then you can write then using one of Stream.Write method.
流提供字节序列的通用视图。
因此,这意味着您需要将信息对象序列化为字节序列。
要制作字节数组,请使用 Marshal.Copy 方法。
希望这有帮助。
Stream provides a generic view of a sequence of bytes.
So that means you need to serialize the info object to a sequence of bytes.
To make byte array use Marshal.Copy method.
Hope this helps.