2010-06-16 4 views
2

분석되는 텍스트가 다른 문화권 (영어, 스페인어, 태국어, 아랍어 등)이 될 수있는 텍스트 분석 응용 프로그램이 있습니다. 문화에 따라 문자열에 대한 규칙이 다릅니다. 정렬, 단어 나누기, 어떤 문자가 같은지 결정 등Qt culture-aware QString 컨테이너 클래스

Qt 컨테이너 클래스를 문화적으로 인식하려면 어떻게해야합니까? 예를 들어 QMap<QString, int>을 사용하는 경우 키가 사용자 지정 문화권의 규칙에 따라 정렬 된 상태로 유지되기를 원합니다. (문화는 호스트 OS와 동일 할 필요는 없습니다.) 마찬가지로 문화의 규칙에 따라 "중복"을 고려해야합니다.

.Net에서 이러한 모든 컨테이너는 IEqualityComparer<TKey>과 같은 문화 인식 비교자를 사용하는 constructed 일 수 있습니다. Qt에 상응하는 것이 있습니까? 그렇지 않은 경우 어떤 해결 방법이 존재합니까?

답변

1

나는 이것을 QMap으로하는 간단한 방법이 없다고 생각합니다. 사용자 정의 비교기를 지정할 수있는 constructor이있는 std::map을 사용할 수 있습니다.

1

QString은 그 목적으로 localeAwareCompare입니다. QMap은 템플릿 매개 변수로 비교 기능을 사용하지 않지만 STL 맵을 사용할 수 있다고 생각합니다.

+0

localeAwareCompare (시스템 로케일 사용)에 특정 로케일을 지정할 수 있다고 생각하지 않습니다. 게다가 대소 문자를 구분해야합니다. ICL 로켈 알고리즘과 결합 된 STL지도가 구출 된 것처럼 보입니다. –

2

지적했듯이 std::map을 사용할 수 있지만 QString 변환 연산자가있는 LocalizedString 클래스를 만드는 것이 좋습니다. 그런 다음 친구와 친구들보다 과부하가 많아서 localeAwareCompare()이나 자신이 만든 비교 대상으로 연기하면 내가 필요로하는 것이 거의 끝날 것입니다.

관련 문제