У меня есть QHash
определяется следующимЧастичный ключ соответствия QHash
QHash<QString, QString> hashLookup;
Я вставил несколько значений этого хэша следующим образом:
hashLookup.insert("OMG", "Oh my God!");
hashLookup.insert("LOL", "Laugh out loud");
hashLookup.insert("RIP", "Rest in peace");
// and so on
У меня есть несколько QStrings следующим образом:
QString a = "OMG_1";
QString b = "LOL_A";
QStirng c = "OMG_YOU";
QString d = "RIP_two";
Я должен найти, существуют ли эти значения в hashLookup
, т.е. начиная с OMG_1
содержит OMG
, я смог бы получить Oh my God!
.
Я пытался сделать это с помощью
if(hashLookup.contains(a)
//do something
, который пытается конечно искать ключ OMG, который не присутствует в таблице поиска и ничего не возвращает. Возможно ли частичное сопоставление ключевых значений в Qt? Если да, как мне следует это реализовать.
ли ваш вариант использования только принимаем _ ? Если это так, вы можете просто разбить его на _ и взять первую часть. –
** не используйте QHash ** для такой цели. Это неправильная структура данных. Функция qHash определяется глобально для строк, а 'qHash (« OMG »)! = QHash (« OMG_1 »)'. Вы хотите использовать QMap, std :: map со компаратором, подобным тому, что предложил Кирилл Черников. – UmNyobe
Некоторые из них также представлены в виде, то есть без _подобных OMG1, RIP2A и т. Д. Я уже думал о вашем предположении, но поскольку он не решает сценарий OMG1, RIP2A и т. Я не был уверен, как продолжить @JeffreyvandeGlind –
smyslov