我无法使用 TCHAR[] 找到映射容器 TCHAR* 的键值?

Can't i find Keyvalue of map container TCHAR* using TCHAR[]?

本文关键字:TCHAR 映射 键值      更新时间:2023-10-16
#include<iostream>
#include<map>
using namesapce std;
void main()
{
   map<const TCHAR*, int> Map;
   Map.insert(make_pare(L"DOG1",1));
   Map.insert(make_pare(L"DOG2",2));
   TCHAR szTem[128];
   wsprintf(szTem,L"DOG%d",1);
   map<const TCHAR*, int>::iterator iter = Map.find(szTem);
   cout << iter->second << endl;
}

在这种情况下,我无法使用TCHAR[]找到TCHAR* Keyvalue。为什么我不能这样做,我怎么能找到指针字符串键值使用字符串,包括整数公式?

您不能这样做,因为默认的map比较器将比较TCHAR指针,这当然是不同的。最好的方法是使用std::wstring代替。如果您坚持使用TCHAR指针,则必须提供自定义比较器。