gpt4 book ai didi

c++ - 动态插入字符串到 std::map

转载 作者:行者123 更新时间:2023-11-30 01:32:20 25 4
gpt4 key购买 nike

我正在尝试创建文件对映射...首先,我使用 FindFirstFile 和 FindNextFile 在指定目录中搜​​索文件,当找到文件时,我搜索映射以查看相关文件是否存在。如果将另一个文件添加到 map 中,则新找到的文件将插入到先前找到的文件旁边。如果未找到关联文件,则将新文件插入到 map 中,并且其对保持不变。

更多解释:假设我们有 2 个文件 file.1.a 和 file.1这些文件代表一对,因此应该作为一对添加到 map 中

//map<File w/o .a, File w .a>
std::map<CString, CString> g_map;

int EnumerateFiles(LPCTSTR Dir)
{
//Search Files....
//Found a File....(for ex: file.1)
//Append .a to the string and search for it in the map
BOOL bAdded = FALSE;
for(std::map<CString, CString>::iterator itr = g_map.begin(); itr != g_map.end(); itr++)
{
if(StrCmp(tchAssocFile, itr->second) == 0)
{
bAdded = TRUE;
//pair the string with the other one;
}

}
if(!bAdded)
//Add the new string to the map and leave its associate blank


//Do the same in reverse if the associate was found first....
}

我希望这很清楚,因为我想不出任何其他方式来表达它......抱歉。

你能帮忙解决这个问题吗...

问候

最佳答案

你有两个文件。
{X} 和 {X}.a

您想搜索一些目录空间并存储找到的内容。

让我们将查找的信息存储在 std::pair 中。
第一个值表示我们是否找到 {x} 第二个值表示我们是否找到 {X}.a
这些对值存储在 map 中,使用 {X} 作为 map 的索引。

#include <memory>
#include <string>
#include <map>

typedef std::pair<bool,bool> FileInfo;
typedef std::map<std::string,FileInfo> FileMapInfo;



FileMapInfo fileMapInfo;

void found(std::string const& fileName)
{
// baseName: We will use this to lookup if either file is found.
// The extension ".a" is removed from this name.
// aExtension: is true if the file ends with ".a"
std::string baseName(fileName);
bool aExtension(false);

std::string::size_type pos = fileName.find_last_of(".a");
if ((pos != std::string::npos) && (pos == fileName.size()-2))
{
// Get the real base
baseName = fileName.substr(0,fileName.size() - 2);
aExtension = true;
}


// This looks up the record about the file(s).
// If it dies not exist it creates an entry with false,false.
FileInfo& fileInfo = fileMapInfo[baseName];

// Now set the appropriate value to true.
if (!aExtension)
{
fileInfo.first = true;
}
else
{
fileInfo.second = true;
}
}

int main()
{
// loop over files.
// call found(<fileName>);
}

关于c++ - 动态插入字符串到 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1940652/

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