지도에 전달 된 경우에도 전달 된 char * 배열을 찾지 못합니다. 지도에서 char *를 std :: string으로 바꿨을 때. 코드가 정상적으로 작동합니다. 평등에 대한 비교를 수행 할 때지도가 <
을 사용하기 때문이다지도의 FIND 함수에 대한 잘못된 결과 얻기
static void CreateTranslationMap();
static UString FindTranslatedString(char* propertyName);
static std::map<char*,UString> TranslationMap ;
static void CreateTranslationMap()
{
UString engString("TextAlignmentPosition");
char* transString= MSGTXT("TextAlignmentPosition");
TranslationMap.insert(std::pair<char*,UString>(transString,engString));
}
UString FindTranslatedString(char* propertyName)
{
UString NotFound("CannotFind");
std::map<char*, UString>::iterator itr;
itr = TranslationMap.begin();
itr = TranslationMap.find(propertyName);
if(itr!= TranslationMap.end())
{
return itr->second;
}
else if(itr== TranslationMap.end())
{
return NotFound;
}
}
char *를 사용할 때 포인터가 아닌 문자열을 비교합니다. – RonenKr