Skocz do zawartości

Dodawanie Stringów w Arduino


Gieneq

Pomocna odpowiedź

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?

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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ę 🙂 

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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.

 

 

Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.