gpt4 book ai didi

c++ - 如何从 CopyDataStruct 中检索 vector ?

转载 作者:太空宇宙 更新时间:2023-11-04 16:16:04 24 4
gpt4 key购买 nike

发送:

 vector<string> vs;
cds.lpData = &vs;

我如何在 WM_COPYDATA 消息中检索它,我似乎无法将接收部分中的 void 指针转换为字符串 vector 。

这是我到目前为止的想法:

已发送:

 cds.lpData = &vs;

接收端:

 case WM_COPYDATA:
{
COPYDATASTRUCT *cds = (COPYDATASTRUCT *)lParam;
if(cds->dwData == CDS_TAG)
{

vector<string> * vs;
vs = (vector<string>*)((cds->lpData));

}
}

如何解引用指向 vector 的指针?

谢谢!

最佳答案

您可以像取消引用任何其他指针一样取消指向 vector 的指针:在它前面加上 * 运算符。在您的情况下,*vs 将是您的 vector ,因此 (*vs)[0] 将是第一个元素。

但是你已经超前了。 WM_COPYDATA 消息用于在进程之间发送数据,但是 vectorstring 不是您可以在进程之间复制并期望工作的类型。您只能使用 POD 类型,因为 Windows 会将原始内存从一个进程复制到另一个进程;它不会调用构造函数或进行内部指针的深度复制。

您需要序列化您的数据结构,使其成为一个连续的内存块。然后您可以使用该消息将其发送到其他地方。通过反转序列化操作在接收端反序列化。

关于c++ - 如何从 CopyDataStruct 中检索 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22469381/

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