gpt4 book ai didi

C# 字典到 C++ std::map

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:45 25 4
gpt4 key购买 nike

我的 C# 文件 Rec.cs 中有一个字典变量定义为:

Dictionary<string, PrepDumpLoadItem> pPrepDumpLoadList 

这个 pPrepDumpLoadList 填充了键和值,如下所示

foreach (XElement element in root.Elements())
{
PrepDumpLoadItem item = new PrepDumpLoadItem();
item.Name = element.Name.ToString();

string isDumpMode = GetValueString(element, "Dump", "enabled");
if (isDumpMode == "1")
{
item.PrepDumpLoadMode += PrepDumpLoadModeType.DUMP;
item.HeaderFile = GetValueString(element, "Dump", "header");
item.DataFile = GetValueString(element, "Dump", "data");
//pPrepDumpLoadList.Add(item.Name, item);
}

string isLoadMode = GetValueString(element, "Load", "enabled");
if (isLoadMode == "1")
{
item.PrepDumpLoadMode += PrepDumpLoadModeType.LOAD;
item.HeaderFile = GetValueString(element, "Load", "header");
item.DataFile = GetValueString(element, "Load", "data");
//pPrepDumpLoadList.Add(item.Name, item);
}

pPrepDumpLoadList.Add(item.Name, item);
}

在上面的代码之后,pPrepDumpLoadList 有 12 个条目,这意味着它的计数 == 12;

然后它传递到一个 C++ 文件 WrapperRec.cpp,其中的每个条目都应该被提取,并传递/复制到一个 C++ std::map 变量 PrepDumpLoadList。这被定义为

std::map<std::string, PrepDumpLoadItem> PrepDumpLoadList;

在 SRecParameters.h 中的 SRecParameters 结构中

下面是 PrepDumpLoadList 在 Debug模式下的样子 (visual studio 2015):

enter image description here看起来不错。 recon 作为参数传递,例如

void WrappedRecon::CreateImpl( ScanParameters scan,
ReconParameters recon,
ScannerParameters scanner,
MessageHandler^ msgHandler
)

我相信它是一个结构与SRecParameters相同/相似的变量。

但是,我很难从 PrepDumpLoadList(来自 C# 的 Dictionary 变量)中提取条目。

我试过了

map<std::string, PrepDumpLoadItem>::iterator it = recon.PrepDumpLoadList.begin();

但是红色摆动出现在recon 下方,并且编译错误显示error C2228: left of '.begin' must have class/struct/union

我对这里发生的事情感到很困惑。我只是想做类似的事情

for (int i = 0; i<recon.PrepDumpLoadList->Count; ++i) {

CopyString(item.Name, recon.PrepDumpLoadList[i].Name, sizeof(item.Name));

item.PrepDumpLoadMode = static_cast<DumpLoadModeType>(recon.PrepDumpLoadList[i].PrepDumpLoadMode);

CopyString(item.HeaderFile, recon.PrepDumpLoadList[i].HeaderFile, sizeof(item.HeaderFile));
CopyString(item.DataFile, recon.PrepDumpLoadList[i].DataFile, sizeof(item.DataFile));

reconParams.PrepDumpLoadList.push_back(item);
}

从 Dictionary 变量中提取信息并将其推回 std::map 变量。任何人都可以指出问题出在哪里以及如何解决?非常感谢。

最佳答案

我在 C# 中创建了一个 List,然后处理(编码)此 List 中的每个项目。并将它们放入 C++ std::map 中。

关于C# 字典到 C++ std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48192393/

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