string

Description :

Les chaînes de texte peuvent être représentées de deux manières. vous pouvez utiliser le type de données String, qui fait partie du noyau à partir de la version 0019, ou vous pouvez créer une chaîne à partir d’un tableau de type char et le terminer par null. Cette page décrit cette dernière méthode. Pour plus de détails sur l’objet String, qui vous offre plus de fonctionnalités au prix de plus de mémoire, consultez la page de l’ objet String .

Syntaxe :

Tous les éléments suivants sont des déclarations valides pour les chaînes.

char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";

 

Possibilités de déclarer des chaînes

  • Déclarer un tableau de caractères sans l’initialiser comme dans Str1
  • Déclarez un tableau de caractères (avec un caractère supplémentaire) et le compilateur ajoutera le caractère nul requis, comme dans Str2
  • Ajouter explicitement le caractère nul, Str3
  • Initialiser avec une constante de chaîne entre guillemets ; le compilateur dimensionnera le tableau pour qu’il s’adapte à la constante de chaîne et à un caractère nul de fin, Str4
  • Initialiser le tableau avec une taille et une constante de chaîne explicites, Str5
  • Initialiser le tableau, en laissant un espace supplémentaire pour une chaîne plus grande, Str6

 

Résiliation nulle

Généralement, les chaînes se terminent par un caractère nul (code ASCII 0). Cela permet aux fonctions (comme Serial.print() ) de dire où se trouve la fin d’une chaîne. Sinon, ils continueraient à lire les octets de mémoire suivants qui ne font pas réellement partie de la chaîne.

Cela signifie que votre chaîne doit avoir un espace pour un caractère de plus que le texte que vous souhaitez qu’elle contienne. C’est pourquoi Str2 et Str5 doivent comporter huit caractères, même si « arduino » n’en contient que sept – la dernière position est automatiquement remplie par un caractère nul. Str4 sera automatiquement dimensionné à huit caractères, un pour le null supplémentaire. Dans Str3, nous avons explicitement inclus nous-mêmes le caractère nul (écrit ‘\0’).

Notez qu’il est possible d’avoir une chaîne sans caractère nul final (par exemple si vous aviez spécifié la longueur de Str2 comme sept au lieu de huit). Cela cassera la plupart des fonctions qui utilisent des chaînes, vous ne devriez donc pas le faire intentionnellement. Si vous remarquez que quelque chose se comporte étrangement (opérant sur des caractères qui ne sont pas dans la chaîne), cependant, cela pourrait être le problème.

 

Guillemets simples ou guillemets doubles ?

Les chaînes sont toujours définies entre guillemets doubles (« Abc ») et les caractères sont toujours définis entre guillemets simples (« A »).

 

Envelopper de longues chaînes

Vous pouvez envelopper de longues chaînes comme ceci :

char myString[] = "C'est la première ligne"
" c'est la deuxième ligne"
" etc";

 

Des rangées de chaînes

Il est souvent pratique, lorsque vous travaillez avec de grandes quantités de texte, comme un projet avec un écran LCD, de configurer un tableau de chaînes. Étant donné que les chaînes elles-mêmes sont des tableaux, il s’agit en fait d’un exemple de tableau à deux dimensions.

Dans le code ci-dessous, l’astérisque après le type de données char « char* » indique qu’il s’agit d’un tableau de « pointeurs ». Tous les noms de tableau sont en fait des pointeurs, cela est donc nécessaire pour créer un tableau de tableaux. Les pointeurs sont l’une des parties les plus ésotériques du C++ pour les débutants à comprendre, mais il n’est pas nécessaire de comprendre les pointeurs en détail pour les utiliser efficacement ici.

Exemple de code :

char *myStrings[] = {"This is string 1", "This is string 2", "This is string 3",
                     "This is string 4", "This is string 5", "This is string 6"
                    };

void setup() {
  Serial.begin(9600);
}

void loop() {
  for (int i = 0; i < 6; i++) {
    Serial.println(myStrings[i]);
    delay(500);
  }
}

 


 

Source  : https://www.arduino.cc/reference/en/language/variables/data-types/string/

 

Laisser un commentaire