C# 字典到 C++ std::map
C# Dictionary to C++ std::map
我的 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,其中的每个条目都应该被提取,然后 passed/copied 到 C++ std::map
变量PrepDumpLoadList
。这被定义为
std::map<std::string, PrepDumpLoadItem> PrepDumpLoadList;
在SRecParameters.h
SRecParameters
的结构中
这是 PrepDumpLoadList
在调试模式下的样子 (visual studio 2015):
看起来不错。 recon
作为参数传递,如
void WrappedRecon::CreateImpl( ScanParameters scan,
ReconParameters recon,
ScannerParameters scanner,
MessageHandler^ msgHandler
)
我相信它是一个结构变量 identical/similar 到 SRecParameters
。
但是,我很难从 PrepDumpLoadList
中提取条目,C# 中的 Dictionary 变量。
我试过了
map<std::string, PrepDumpLoadItem>::iterator it = recon.PrepDumpLoadList.begin();
但 recon
下方出现红色摆动,编译错误显示 error C2228: '.begin' 左侧必须有 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# 文件中有一个字典变量 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,其中的每个条目都应该被提取,然后 passed/copied 到 C++ std::map
变量PrepDumpLoadList
。这被定义为
std::map<std::string, PrepDumpLoadItem> PrepDumpLoadList;
在SRecParameters.h
SRecParameters
的结构中
这是 PrepDumpLoadList
在调试模式下的样子 (visual studio 2015):
recon
作为参数传递,如
void WrappedRecon::CreateImpl( ScanParameters scan,
ReconParameters recon,
ScannerParameters scanner,
MessageHandler^ msgHandler
)
我相信它是一个结构变量 identical/similar 到 SRecParameters
。
但是,我很难从 PrepDumpLoadList
中提取条目,C# 中的 Dictionary 变量。
我试过了
map<std::string, PrepDumpLoadItem>::iterator it = recon.PrepDumpLoadList.begin();
但 recon
下方出现红色摆动,编译错误显示 error C2228: '.begin' 左侧必须有 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
.