取消引用C++中的结构数组项
Dereference structure array items in C++
使用以下代码取消引用数组对象时遇到问题。我想做的是将*pstructDocuments的数组元素复制到一个全局向量中。我知道全局变量不是最好的方法,但出于测试目的,我想用结构元素填充全局向量。
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]);
不起作用。我认为这与指针有关。。。
不工作意味着我无法遍历向量并访问存储在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++将文本文件中的数据读取到结构数组中
- JSON转换为nlohmann JSON-lib中的结构数组
- 需要帮助将结构数组传递给函数
- 在 64 位边界上对齐C++结构数组?
- 带有枚举方向/类型的气泡排序结构数组
- 在C++中访问结构数组中的数据
- 从指向结构数组的指针中提取元素
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何在函数中显示结构数组
- 包含作为成员C++函数的结构数组
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- std::transform 将一个结构数组复制到另一个结构数组
- 将非托管结构数组封送到托管数组
- 显示结构数组
- 结构数组中所有类似字段的总和
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何将字符串字符与结构数组进行比较?
- C++结构数组