gpt4 book ai didi

c++ - C++ 中的取消引用结构数组项

转载 作者:行者123 更新时间:2023-11-28 06:41:06 25 4
gpt4 key购买 nike

我在使用以下代码取消引用我的数组对象时遇到问题。我想做的是将 *pstructDocuments 的数组元素复制到全局 vector 中。我知道全局变量不是最好的方法,但出于测试目的,我想用结构元素填充全局 vector 。

struct DOCUMENTS{
wchar_t* TYPE;
wchar_t* PATH;
}

std::vector<DOCUMENTS> CdeskDocumentsVec

void initDocuments(DOCUMENTS *pstructDocuments, int size){

for (int i = 0; i < size; i++)
{
DOCUMENTS test1 = {};
test1.PATH = pstructDocuments[i].PATH;
test1.TYPE = pstructDocuments[i].TYPE;
CdeskDocumentsVec.push_back(test1);
}
}

我已经测试了一些复制功能,但它们没有按预期工作。所以我希望有人能帮助我找到创建包含所有数组元素的全局拷贝的解决方案......

这个

DOCUMENTS test1 = {};
test1.PATH = L"PATH_TEXT";
test1.TYPE = L"TYPE_TEXT";
CdeskDocumentsVec.push_back(test1);

适用于已定义和给定的字符串。

这个

CdeskDocumentsVec.push_back(pstructDocuments[i]);

不起作用。我认为这与指针有关...

不工作意味着我无法遍历 vector 并访问存储在 pstructDocuments 数组的 DOCUMENT 结构中的字符串...

更新:当我复制数据时

const size_t len = wcslen(pstructDocuments[i].PATH);
test1.PATH = new wchar_t[len + 1];
wcsncpy(test1.PATH, pstructDocuments[i].PATH, len + 1);

它似乎工作....

最佳答案

从 pstructDocuments[i] 复制字符串而不是分配它们。当您分配它们时,您存储的是指向原始字符串而不是拷贝的指针。如果原始字符串被破坏,您就会遇到问题。

关于c++ - C++ 中的取消引用结构数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940541/

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