Как искать подстроку в QLatin1String? - PullRequest
0 голосов
/ 26 марта 2019

В чем причина того, что в классе QLatin1String отсутствуют какие-либо операции для поиска подстроки, такие как indexOf, find или contains? Только startsWith и endsWith я был найден, но они не могут искать в середине строки

1 Ответ

1 голос
/ 26 марта 2019

Почему бы вам не заняться этим с Qt.

Вообще говоря, QLatin1String используется для обозначения того, что мы использовали для вызова текста ASCII (без Unicode). QString - это всесильная строка по умолчанию в Qt, и вы обычно должны использовать ее, или вы можете преобразовать ее в std::string и использовать ее. Любой из них может прийти за счет копии.

Если вы хотите избежать копирования, QLatin1String имеет функции begin() и end(), поэтому вы также можете использовать стандартные алгоритмы, например, новые C ++ 17 std::search():

auto s = QLatin1String("The lazy dog");
auto needle = QLatin1String("azy");
auto it = std::search( std::begin(s), std::end(s), 
    std::boyer_moore_horspool_searcher( std::begin(needle), std::end(needle) ) );

Вот рабочий пример с использованием std::string с, который также будет работать в течение QLatin1String с на Coliru .

Подробнее о Блог Бартека по кодированию .

...