Karakterlánc-hozzáadó operátor

Karakterláncok hozzáadása különféle módokon.


Utolsó felülvizsgálat: 2022.02.04 16:50


A Stringeket többféleképpen is összeadhatja. Ezt összefűzésnek nevezik, és ez azt eredményezi, hogy az eredeti karakterlánc hosszabb annál a karakterláncnál vagy karaktertömbnél, amellyel összefűzi. A + operátor lehetővé teszi, hogy egy Stringet egy másik Stringgel kombináljon, konstans karaktertömbbel, egy állandó vagy változó szám ASCII-reprezentációjával vagy egy konstans karakterrel.

// egész szám állandó hozzáadása egy karakterlánchoz:
stringThree =  stringOne + 123;
// long egész szám állandó hozzáadása egy karakterlánchoz:
stringThree = stringOne + 123456789;
// karakter állandó hozzáadása egy karakterlánchoz:
stringThree =  stringOne + 'A';
// karakterlánc állandó hozzáadása egy karakterlánchoz:
stringThree =  stringOne +  "abc";
// két String összeadása:
stringThree = stringOne + stringTwo;

Használhatja a + operátort is egy függvény eredményének karakterlánchoz való hozzáadásához, ha a függvény a fent említett engedélyezett adattípusok valamelyikét adja vissza. Például,

stringThree = stringOne + millis();

Ez megengedett, mivel a millis() függvény egy long egész számot ad vissza, amely hozzáadható egy karakterlánchoz. Ezt is megteheti:

stringThree = stringOne + analogRead(A0);

mert az analogRead() egész számot ad vissza. A karakterlánc-összefűzés nagyon hasznos lehet, ha az értékek kombinációját és ezek leírását egyetlen karakterláncban kell megjelenítenie, hogy soros kommunikáción keresztül, LCD-kijelzőn, Ethernet-kapcsolaton keresztül vagy bárhol, ahol a karakterláncok hasznosak lehetnek.

Vigyázat: Ügyeljen arra, hogy több változótípust fűzzen össze ugyanabban a sorban, mert váratlan eredményeket kaphat. Például:

int sensorValue = analogRead(A0);
String stringOne = "Sensor value: ";
String stringThree = stringOne + sensorValue;
Serial.println(stringThree);

eredmény: "Sensor Value: 402" vagy bármi legyen is az analógRead() eredménye, de

int sensorValue = analogRead(A0);
String stringThree = "Sensor value: " + sensorValue;
Serial.println(stringThree);

kiszámíthatatlan eredményt ad, mivel a stringThree soha nem kapott kezdeti értéket, mielőtt elkezdte volna a különböző adattípusok összefűzését.

Íme egy másik példa, ahol a helytelen inicializálás hibákat okoz:

Serial.println("I want " + analogRead(A0) + " donuts");

Ez nem lesz lefordítva, mert a fordító nem kezeli megfelelően az operátor elsőbbségét. Másrészt a következő ugyan lefordításra kerül, de nem az elvárt módon fut:

int sensorValue = analogRead(A0);
String stringThree = "I want " + sensorValue;
Serial.println(stringThree  + " donuts");

Ugyanabból az okból nem fut megfelelően, mint korábban: a stringThree soha nem kapott kezdeti értéket, mielőtt elkezdte volna összefűzni a különböző adattípusokat.

A legjobb eredmény érdekében inicializálja a karakterláncokat, mielőtt összefűzné őket.

Hardver szükséglet

  • Arduino kártya

Az áramkör

Ebben a példában nincs áramkör, bár a kártyát USB-n keresztül kell csatlakoztatni a számítógéphez, és az Arduino Software (IDE) soros monitor ablakának nyitva kell lennie.

A kód

Íme egy működő példa több különböző összefűzési példára:

/*
  Adding Strings together

  Példák a karakterláncok összeadására
  Számos különböző adattípust is hozzáadhat a Stringhez, amint az itt látható:

  created 27 Jul 2010
  modified 2 Apr 2012
  by Tom Igoe

  Ez a kód nyilvános.

  https://docs.arduino.cc/built-in-examples/strings/StringAdditionOperator
*/

// deklarál három Stringet:
String stringOne, stringTwo, stringThree;

void setup() {
  // inicializálja a soros port, és megvárja, amíg megnyílik:
  Serial.begin(9600);
  while (!Serial) {
    ; // várja meg a soros port csatlakozását. Csak a natív USB-porthoz szükséges 
  }

  stringOne = String("You added ");
  stringTwo = String("this string");
  stringThree = String();
  // send an intro:
  Serial.println("\n\nAdding Strings together (concatenation):");
  Serial.println();
}

void loop() {
  // egész szám állandó hozzáadása egy karakterlánchoz:
  stringThree =  stringOne + 123;
  Serial.println(stringThree);    // nyomtatva: "You added 123"

  // long egész szám állandó hozzáadása egy karakterlánchoz:
  stringThree = stringOne + 123456789;
  Serial.println(stringThree);    // nyomtatva: "You added 123456789"

  // karakter állandó hozzáadása egy karakterlánchoz:
  stringThree =  stringOne + 'A';
  Serial.println(stringThree);    // nyomtatva: "You added A"

  // karakterlánc állandó hozzáadása egy karakterlánchoz:
  stringThree =  stringOne +  "abc";
  Serial.println(stringThree);    // nyomtatva: "You added abc"

  stringThree = stringOne + stringTwo;
  Serial.println(stringThree);    // nyomtatva: "You added this string"

  // egész szám változó hozzáadása egy karakterlánchoz:
  int sensorValue = analogRead(A0);
  stringOne = "Sensor value: ";
  stringThree = stringOne  + sensorValue;
  Serial.println(stringThree);    // nyomtatva: "Sensor Value: 401" or whatever value analogRead(A0) has

  // long egész szám változó hozzáadása egy karakterlánchoz:
  stringOne = "millis() value: ";
  stringThree = stringOne + millis();
  Serial.println(stringThree);    // nyomtatva: "The millis: 345345" vagy bármilyen értéke is van a millis()-nek

  // ne csinálj semmit, amíg igaz:
  while (true);
}

Tudj meg többet

További alapvető oktatóanyagokat a beépített példák részben talál.

Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.