Qt - klasa QString i operacje tekstowe
Stronę tą wyświetlono już: 6592 razy
Biblioteka Qt udostępnia własną klasę QString, która (jak zresztą można się domyślić) umożliwia tworzenie przechowywanie ciągów znaków, przeprowadzanie na nich szeregu operacji, konwersji liczba → tekst i tekst → liczba. Warto więc zapoznać się z częścią metod i operatorów, jakich owa klasa udostępnia. Żeby możliwe było skorzystanie z klasy QString konieczne jest załączenie pliku QString.
Długość ciągu znaków
Za pomocą metody length można pozyskać informację o liczbie przechowywanego ciągu znaków. Ta metoda jest równoważna metodzie size
Sprawdzanie, czy obiekt klasy QString został zainicjalizowany lub czy jest pusty
Metoda isEmpty zwraca true, gdy ciąg znaków przechowywanych przez zmienną ma długość równą 0. Natomiast metoda isNull zwraca true, gdy obiekt został zainicjalizowany domyślnym konstruktorem.
Czyszczenie zawartości klasy QString
Metoda clear usuwa przechowywany w obiekcie ciąg znaków.
Konwersja test → liczba
Klasa QString udostępnia następujące metody, które konwertują zapisaną w obiekcie klasy dane liczbowe w postaci tekstowej na liczbę danego typu. Oto lista podstawowych metod tego typu:
- zamiana tekstu na liczbę całkowitą:
- toShort;
- toUShort;
- toInt;
- toUInt;
- toLong;
- toULong;
- toLongLong;
- toULongLong;
- zamiana tekstu na liczbę zmiennoprzecinkową:
- toFloat;
- toDouble
Metody zamieniające tekst na liczbę całkowitą mogą przyjmować dwa opcjonalne argumenty, oto przykład wykorzystania metody toInt w różnych wersjach:
Istnieje również metoda number, która jest wielokrotnie przeciążona i może przyjmować różne typy danych liczbowych.
Konwersja liczba → tekst
Możliwa jest również oczywiście konwersja liczby na ciąg znaków. W tym celu klasa QString udostępnia metodę arg, która jest wielokrotnie przeciążona. Oto przykład wykorzystania tejże funkcji:
W przypadku liczb całkowitych metoda arg jako pierwszy argument przyjmuje zamienianą wartość liczbową, natomiast drugi argument to minimalna liczba znaków, jaką liczba musi zajmować, trzeci argument to system zapisu liczby. Powyższy przykład wyświetli:
Dziesiętnie 63 to 3f szesnastkowo
Łączenie, zastępowanie i usuwanie ciągów znaków
- append - dodaje podany jako argument tekst na koniec obiektu;
- prepend - dodaje podany jako argument tekst na początek obiektu;
- insert - dodaje podany jako argument tekst w podanym miejscu;
- replace - zastępuje podany zakres znaków nowym ciągiem znaków;
- remove - usuwa z tekstu podany zakres znaków;
- trimmed - usuwa z początku i końca tekstu wszystkie białe znaki;
- simplified - usuwa z początku i końca tekstu wszystkie białe znaki oraz zastępuje wystąpienia białych znaków pomiędzy wyrazami pojedynczą spacją;
Wynik działania powyższego kodu:
"middle" "first middle" "first middle last" "first & last"
Łączenie ciągów znaków możliwe jest również przy wykorzystaniu operatora + lub +=:
Zamiana małych liter na duże i dużych na małe
- toUpper - zamienia litery na duże;
- toLower - zamienia litery na małe;
Powyższy kod wyświetlić powinien:
"małgosia mała owieczkę miała" "MAŁGOSIA MAŁA OWIECZKĘ MIAŁA"
Metody wycinające fragment tekstu
- left - wycina podaną jako argument tej metody liczbę znaków licząc od początku tekstu;
- mid - wycina określoną liczbę znaków licząc od podanej pozycji;
- right - wycina podaną jako argument tej metody liczbę znaków licząc od końca tekstu;
Powyższy kod wyświetlić powinien:
"left" "mid" "right"
Dzielenie (parsowanie) tekstu
Metoda Split umożliwia podzielenie tekstu względem podanego znaku. Oto przykład jej wykorzystania:
Znajdowanie ciągu tekstu w tekście
Istnieją dwie metody służące do odnajdywania tekstu w tekście:
- indexOf - zwraca pozycję pierwszego wystąpienia podanego ciągu znaków;
- lastIndexOf - zwraca pozycję ostatniego wystąpienia podanego ciągu znaków;
Rezultat działania powyższego kodu:
0 -1 3
Możliwe jest również wykorzystanie wyrażeń regularnych:
Wynik działania powyższego kodu:
"00-111" "00-234"
Porównywanie dwóch ciągów znaków
Klasa QString obsługuje operatory porównania oraz dysponuje metodą compare umożliwiającą porównywanie dwóch ciągów znaków. Oto przykład z wykorzystaniem metody compare:
Wynik działania powyższego kodu:
"abcdefgh" != "ABCDEFGH" "abcdefgh" == abcdefgh
Możliwe jest również wykorzystanie operatorów:
- < - mniejsze niż;
- <= - mniejsze lub równe;
- == - równe;
- != - nie równe;
- >= - większe lub równe;
- > - większe
Oczywiście różnica pomiędzy użyciem powyższych operatorów a użyciem metody compare jest taka, że operator zwraca wartość typu bool natomiast metoda compare zwraca liczbę typu int określającą różnicę pomiędzy dwoma ciągami znaków.