Η πρόσθεση των συμβολοσειρών μπορεί να γίνει με πολλούς τρόπους. Αυτό ονομάζεται “συνένωση”. Το αποτέλεσμα αυτής της πράξης, θα δώσει την αρχική συμβολοσειρά, με μήκος το οποίο θα προκύπτει από την συμβολοσειρά ή τον χαρακτήρα με τον οποίο έγινε η ένωση. Κατά αυτόν τον τρόπο, ο τελεστής + σας επιτρέπει να συνδέσετε την αρχική συμβολοσειρά σας με: μια άλλη συμβολοσειρά, με έναν σταθερό χαρακτήρα, με την αναπαράσταση ASCII ενός σταθερού ή μεταβλητού αριθμού καθώς και με έναν σταθερό χαρακτήρα.

  // adding a constant integer to a string:
  stringThree =  stringOne + 123;

  // adding a constant long interger to a string:
  stringThree = stringOne + 123456789;

  // adding a constant character to a string:
  stringThree =  stringOne + 'A';

  // adding a constant string to a string:
  stringThree =  stringOne +  "abc";

  // adding two Strings together:
  stringThree = stringOne + stringTwo;

Επίσης, μπορείτε να χρησιμοποιήσετε τον τελεστή + για να προσθέσετε τα αποτελέσματα μιας συνάρτησης σε μια συμβολοσειρά. Αυτό μπορεί να γίνει στην περίπτωση που η συνάρτηση, επιστρέφει έναν από τους επιτρεπόμενους τύπους δεδομένων που αναφέρθηκαν παραπάνω. Για παράδειγμα:

stringThree = stringOne + millis();

Έτσι, αυτό είναι επιτρεπτό αφού η συνάρτηση millis() επιστρέφει έναν long ακέραιο. Συνεπώς, το αποτέλεσμα μπορεί να προστεθεί σε μία συμβολοσειρά. Ένας άλλος τρόπος είναι ο εξής:

stringThree = stringOne + analogRead(A0);

Και αυτό είναι αποδεκτό, διότι η συνάρτηση analogRead() επιστρέφει έναν ακέραιο. Με άλλα λόγια, η σύνδεση συμβολοσειρών μπορεί να αποδειχθεί εξαιρετικά χρήσιμη. Τα αποτελέσματα των πράξεων μπορούν να απεικονισθούν με τους παρακάτω τρόπους: μέσω σειριακής επικοινωνίας, σε μια LCD οθόνη καθώς και οπουδήποτε αλλού απαιτείται η χρήση των συμβολοσειρών.

Προσοχή: Θα πρέπει να είστε ιδιαίτερα προσεκτικοί κατά την συνένωση πολλαπλών μεταβλητών διαφορετικού τύπου στην ίδια γραμμή. Όπως γίνεται αντιληπτό, αυτό μπορεί να επιστρέψει τα μη αναμενόμενα αποτελέσματα. Για παράδειγμα:

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

O παραπάνω κώδικας θα επιστρέψει το “Sensor Value: 402” ή γενικά το αποτέλεσμα της συνάρτησης analogRead().

Όμως, ο παρακάτω κώδικας θα αποδώσει ανεπιθύμητα αποτελέσματα. Ο λόγος είναι ότι το stringThree δεν έλαβε ποτέ μια αρχική τιμή. Άρα, η συνένωση διαφορετικού τύπου δεδομένων δεν μπορεί να υλοποιηθεί.

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

Ακολουθεί ένα άλλο παράδειγμα όπου οι λανθασμένες αρχικοποιήσεις θα προκαλέσουν σφάλματα:

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

Αυτό δεν θα μεταγλωττιστεί, διότι ο μεταγλωττιστής δεν μπορεί να χειριστεί με σωστό τρόπο την προτεραιότητα του τελεστή. Από την άλλη πλευρά, ο ακόλουθος κώδικας θα μεταγλωττιστεί, όμως δεν θα λειτουργήσει όπως αναμενόταν:

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

Ο παραπάνω κώδικας δεν εκτελείται σωστά για τον ίδιο ακριβώς λόγο όπως και πριν. Δηλαδή, το stringThree δεν έλαβε ποτέ μια αρχική τιμή πριν από την συνένωση διαφορετικού τύπου δεδομένων.

Για καλύτερα αποτελέσματα, αρχικοποιήστε πρώτα τις συμβολοσειρές σας προτού προχωρήσετε στην ένωσή τους.

Απαιτούμενος εξοπλισμός

– Πλακέτα του Arduino ή του Genuino.

Κύκλωμα

Δεν υπάρχει κάποιο συγκεκριμένο κύκλωμα για αυτό το παράδειγμα. Ωστόσο, η πλακέτα σας θα πρέπει να είναι συνδεδεμένη με τον υπολογιστή σας μέσω της USB θύρας. Επίσης, θα πρέπει να είναι ενεργοποιημένο και το παράθυρο της σειριακής οθόνης του λογισμικού του Arduino (IDE).

Arduino Board
Η εικόνα δημιουργήθηκε από το πρόγραμμα Fritzing.

Κώδικας

Save
Ακολουθεί ένα παράδειγμα το οποίο παρουσιάζει πολλαπλούς τρόπους συνένωσης:

/*
  Adding Strings together

 Examples of how to add strings together
 You can also add several different data types to string, as shown here:

 created 27 July 2010
 modified 2 Apr 2012
 by Tom Igoe

 http://www.arduino.cc/en/Tutorial/StringAdditionOperator

 This example code is in the public domain.
 */

// declare three strings:
String stringOne, stringTwo, stringThree;

void setup() {
  // initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

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

void loop() {
  // adding a constant integer to a string:
  stringThree =  stringOne + 123;
  Serial.println(stringThree);    // prints "You added 123"

  // adding a constant long interger to a string:
  stringThree = stringOne + 123456789;
  Serial.println(stringThree);    // prints "You added 123456789"

  // adding a constant character to a string:
  stringThree =  stringOne + 'A';
  Serial.println(stringThree);    // prints "You added A"

  // adding a constant string to a string:
  stringThree =  stringOne +  "abc";
  Serial.println(stringThree);    // prints "You added abc"

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

  // adding a variable integer to a string:
  int sensorValue = analogRead(A0);
  stringOne = "Sensor value: ";
  stringThree = stringOne  + sensorValue;
  Serial.println(stringThree);    // prints "Sensor Value: 401" or whatever value analogRead(A0) has

  // adding a variable long integer to a string:
  long currentTime = millis();
  stringOne = "millis() value: ";
  stringThree = stringOne + millis();
  Serial.println(stringThree);    // prints "The millis: 345345" or whatever value currentTime has

  // do nothing while true:
  while (true);
}

Επιστροφή στην σελίδα Παραπομπές Γλώσσας

Save