首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从CopyDataStruct中检索向量?

如何从CopyDataStruct中检索向量?
EN

Stack Overflow用户
提问于 2014-03-18 02:38:56
回答 2查看 200关注 0票数 0

发送:

代码语言:javascript
复制
 vector<string> vs;
 cds.lpData = &vs;

如何在WM_COPYDATA消息中检索这个信息,我似乎无法将接收部分中的空指针转换为字符串向量。

以下是我到目前为止得出的结论:

已发送:

代码语言:javascript
复制
 cds.lpData = &vs;

接收端:

代码语言:javascript
复制
 case WM_COPYDATA:
{
    COPYDATASTRUCT *cds = (COPYDATASTRUCT *)lParam;
    if(cds->dwData == CDS_TAG)
    {

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

    }
}

如何取消指向向量的指针?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-03-18 04:39:10

引用指向向量的指针,就像取消引用任何其他指针一样:在它前面加上*运算符。在您的示例中,*vs将是您的向量,因此(*vs)[0]将是第一个元素。

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

您需要序列化您的数据结构,因此它都是一个连续的内存块。然后您可以使用该消息将其发送到其他地方。反序列化接收端的反序列化。

票数 5
EN

Stack Overflow用户

发布于 2014-03-19 02:37:48

发送:

代码语言:javascript
复制
cds.lpData = &vs;

接收:

代码语言:javascript
复制
 vector<string> * vs;
    vs = (vector<string>*)((cds->lpData));
    vs->at(//Whatever element you need to obtain);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22469381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档