unordered_map查找const wchar_t *

时间:2018-12-11 07:19:50

标签: c++ find unordered-map

我使用以下代码从文件路径获取文件名:

const wchar_t* MyClass::PathFindFileNameW(const wchar_t* path)
{

 const wchar_t* p1 = path ? wcsrchr(path, L'\\') : nullptr;
 const wchar_t* p2 = path ? wcsrchr(path, L'/') : nullptr;

 p1 = !p1 || (p2 && p2 > p1) ? p2 : p1;

 return (p1 ? p1 + 1 : path);

}

我还具有以下unordered_map定义:

std::unordered_map<const wchar_t*,std::string> mymap = {
 {L"file1.doc","Author1"},
 {L"file2.doc","Author2"},
 {L"file3.doc","Author3"} };

使用以下代码,我想按文件名从地图中获取作者:

std::unordered_map<const wchar_t*,std::string>::const_iterator got = mymap.find(this->PathFindFileNameW(this->path));

if (got == mymap.end())
{

    Log("No result");

}

即使文件名存在于地图中,该代码也会记录“无结果”。

std::unordered_map<const wchar_t*,std::string>::const_iterator got = mymap.find(L"file1.doc");

给出结果。我在这里想念什么?

1 个答案:

答案 0 :(得分:7)

您有一个以指针作为键的地图,因此,只有在与键存储在相同地址的字符串中,您才会找到该字符串。

使用std::wstring作为键。