Arduino - obiekt typu String
Drugim typem ciągu używanym w programowaniu Arduino jest obiekt String.
Co to jest przedmiot?
Obiekt to konstrukcja zawierająca zarówno dane, jak i funkcje. Obiekt String można utworzyć tak jak zmienną i przypisać mu wartość lub ciąg. Obiekt String zawiera funkcje (w programowaniu obiektowym (OOP) nazywane „metodami”), które operują na danych łańcuchowych zawartych w obiekcie String.
Poniższy szkic i wyjaśnienie wyjaśni, czym jest obiekt i jak jest używany obiekt String.
Przykład
void setup() {
String my_str = "This is my string.";
Serial.begin(9600);
// (1) print the string
Serial.println(my_str);
// (2) change the string to upper-case
my_str.toUpperCase();
Serial.println(my_str);
// (3) overwrite the string
my_str = "My new string.";
Serial.println(my_str);
// (4) replace a word in the string
my_str.replace("string", "Arduino sketch");
Serial.println(my_str);
// (5) get the length of the string
Serial.print("String length is: ");
Serial.println(my_str.length());
}
void loop() {
}
Wynik
This is my string.
THIS IS MY STRING.
My new string.
My new Arduino sketch.
String length is: 22
Tworzony jest obiekt ciągowy i przypisywany mu jest wartość (lub ciąg) w górnej części szkicu.
String my_str = "This is my string." ;
Spowoduje to utworzenie obiektu String o nazwie my_str i nadaje mu wartość „To jest mój ciąg”.
Można to porównać do tworzenia zmiennej i przypisywania jej wartości, takiej jak liczba całkowita -
int my_var = 102;
Szkic działa w następujący sposób.
Drukowanie sznurka
Łańcuch można wydrukować w oknie monitora szeregowego, tak jak ciąg tablicy znaków.
Zamień ciąg na wielkie litery
Utworzony obiekt string my_str ma wiele funkcji lub metod, które można na nim operować. Te metody są wywoływane przy użyciu nazwy obiektu, po której następuje operator kropki (.), A następnie nazwa funkcji, która ma zostać użyta.
my_str.toUpperCase();
Plik toUpperCase() funkcja działa na ciągu zawartym w my_strobiekt typu String i konwertuje dane ciągu (lub tekst), które zawiera obiekt, na znaki z dużych liter. Listę funkcji, które zawiera klasa String, można znaleźć w dokumentacji Arduino String. Technicznie rzecz biorąc, String nazywa się klasą i służy do tworzenia obiektów typu String.
Zastąp ciąg
Operator przypisania służy do przypisywania nowego ciągu do my_str obiekt, który zastępuje stary ciąg
my_str = "My new string." ;
Operator przypisania nie może być używany w ciągach tablic znaków, ale działa tylko na obiektach typu String.
Zastępowanie słowa w ciągu
Funkcja replace () zastępuje pierwszy przekazany do niej ciąg drugim przekazanym do niej. replace () to kolejna funkcja wbudowana w klasę String i dlatego jest dostępna do użycia w obiekcie String my_str.
Pobieranie długości sznurka
Uzyskanie długości łańcucha można łatwo wykonać za pomocą length (). W przykładowym szkicu wynik zwracany przez length () jest przekazywany bezpośrednio do Serial.println () bez użycia zmiennej pośredniej.
Kiedy używać obiektu typu String
Obiekt String jest znacznie łatwiejszy w użyciu niż tablica znaków ciągu. Obiekt ma wbudowane funkcje, które mogą wykonywać wiele operacji na łańcuchach.
Główną wadą korzystania z obiektu String jest to, że zużywa on dużo pamięci i może szybko zużywać pamięć RAM Arduino, co może powodować zawieszanie się, awarie lub nieoczekiwane zachowanie Arduino. Jeśli szkic na Arduino jest mały i ogranicza użycie obiektów, to nie powinno być problemów.
Ciągi tablic znaków są trudniejsze w użyciu i może być konieczne napisanie własnych funkcji, aby operować na tego typu ciągach. Zaletą jest to, że masz kontrolę nad rozmiarem tworzonych tablic ciągów, dzięki czemu możesz zachować małe tablice, aby zaoszczędzić pamięć.
Musisz się upewnić, że nie piszesz poza końcem granic tablicy za pomocą tablic ciągów. Obiekt String nie ma tego problemu i zajmie się granicami napisów za Ciebie, pod warunkiem, że jest wystarczająco dużo pamięci, aby mógł na nim operować. Obiekt String może próbować zapisać do pamięci, która nie istnieje, gdy zabraknie pamięci, ale nigdy nie będzie zapisywać na końcu ciągu, na którym działa.
Gdzie używane są ciągi znaków
W tym rozdziale zbadaliśmy struny, ich zachowanie w pamięci i ich operacje.
Praktyczne zastosowania ciągów zostaną omówione w następnej części tego kursu, kiedy będziemy badać, jak uzyskać dane wejściowe użytkownika z okna monitora szeregowego i zapisać dane wejściowe w ciągu.