Skocz do zawartości

Dodawanie Stringów w Arduino


Pomocna odpowiedź

Napisano

Staram się wgryźć w temat Stringów w Arduino i nie rozumiem jak działa dodawanie. Na stronie Arduino > String Addition Operator czytam że:

Cytat

The + operator allows you to combine a String with another String, with a constant character array, an ASCII representation of a constant or variable number, or a constant character.

Oznacza to że dodawać można tylko i wyłącznie String do czegoś::

String s = String + coś;

Mogą to być przypadki:

String a = String("aaa") + 123;
String b = a + 456;

String c = "ccc";
String d = c + 789;

Ale już nie można zrobić czegoś takiego:

String d_nie = "ccc" + 789;

Co powoduje że dostawienia Stringa c w Stringu d coś zmienia?

Literał znakowy to nie String.

Podstawienie:

String c = "xyz";

tworzy obiekt klasy String. Operator podstawienia w tym przypadku ustawia wartość tego obiektu. Operator dodawania w przypadku stringów działa jak operator konkatencji (vide metoda concat() klasy String, w pliku ARDUINO_HOME/hardware/arduino/avr/cores/arduino/WString.cpp i ARDUINO_HOME/hardware/arduino/avr/cores/arduino/WString.h).

Jeśli chcesz wykonać działanie:

"xxx" + 789

to raczej nie wyjdzie: "xxx" to literał znakowy, 789 to literał int. Takie działanie jest oczywiście dozwolone, ale w wyniku dostaniesz wskaźnik na bajt oddalony o 789 od początku literału "xxx" - a chyba nie o to chodziło?

 

 

 

 

  • Pomogłeś! 1
4 minuty temu, ethanak napisał:

Takie działanie jest oczywiście dozwolone, ale w wyniku dostaniesz wskaźnik na bajt oddalony o 789

O właśnie zgadza się, taki też dostaję wynik przy próbie użycia z przesunięciem 123:

Adding Strings together (concatenation):

aaa123
aaa123456
gether (concatenation):

Dziękuję za poradę 🙂 

Warto w tym temacie zwrócić uwagę na możliwość przeładowania operatora w C++ i wykorzystać w nim wbudowane funkcje do ułatwienia sobie życia.

11 godzin temu, atMegaTona napisał:

Warto w tym temacie zwrócić uwagę na możliwość przeładowania operatora w C++

Chcesz zmienić znaczenie operatora + i zrezygnować z możliwości dodawania inta do wskaźnika? To może by bolesne...

11 godzin temu, atMegaTona napisał:

wykorzystać w nim wbudowane funkcje do ułatwienia sobie życia.

Pokaż mi ułatwienie w przypadku pokazanym w pierwszym poście w tym wątku.

 

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...