string

[Adattípusok]

Leírás

A szöveges karakterláncok (stringek) kétféleképpen ábrázolhatók. Használhatja a String adattípust, amely a 0019-es verziótól kezdve a mag részét képezi, vagy létrehozhat egy karakterláncot egy char típusú tömbből, és nullával lezárja. Ez az oldal az utóbbi módszert ismerteti. További részletekért a String objektumról, amely több funkcionalitást biztosít több memória árán, tekintse meg a String objektum oldalt.

Szintaxis

Az alábbiak mindegyike érvényes deklaráció a karakterláncokhoz.

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";

Lehetőségek karakterláncok deklarálására

  • Egy karaktertömb deklarálása inicializálás nélkül, mint az Str1-ben

  • Egy karaktertömb deklarálása (egy extra karakterrel), és a fordító hozzáadja a szükséges null karaktert, mint az Str2-ben

  • Explicit módon adja hozzá a nulla karaktert, Str3

  • Inicializálás egy karakterlánc-állandóval, idézőjelben; a fordító úgy méretezi a tömböt, hogy illeszkedjen a karakterlánc-állandóhoz és a befejező nullkarakterhez, Str4

  • Inicializálja a tömböt explicit méret- és karakterlánc-állandóval, Str5

  • Inicializálja a tömböt, és hagy extra helyet egy nagyobb karakterláncnak, Str6

Nulla lezárás

Ez lehetővé teszi, hogy a függvények (például a Serial.print()) megmondják, hol van egy karakterlánc vége. Ellenkező esetben folytatnák a memória további bájtjainak olvasását, amelyek valójában nem részei a karakterláncnak.

Ez azt jelenti, hogy a karakterláncban eggyel több karakternek kell helyet adnia, mint a kívánt szövegnek. Ezért az Str2-nek és az Str5-nek nyolc karakterből kell állnia, bár az "arduino" csak hét – az utolsó pozíció automatikusan nulla karakterrel lesz kitöltve. Az Str4 mérete automatikusan nyolc karakterre lesz méretezve, egy az extra nulla karakterhez. Az Str3-ban saját magunk is beépítettük a nulla karaktert (a '\0'-t).

Vegye figyelembe, hogy lehetséges egy karakterlánc utolsó nulla karakter nélkül (például ha az Str2 hosszát hét helyett nyolcra adta meg). Ez megszakítja a legtöbb karakterláncot használó függvényt, ezért ezt nem szabad szándékosan csinálni. Ha azonban észreveszi, hogy valami furcsán viselkedik (a karakterláncban nem szereplő karakterekkel működik), akkor ez lehet a probléma.

Egyszeres vagy dupla idézőjelek?

A karakterláncok mindig kettős idézőjelben ("Abc"), a karakterek pedig mindig szimpla idézőjelben ('A') vannak megadva.

Hosszú stringek tördelése

A hosszú stringeket így tördelheti fel:

char myString[] = "Ez az első sor"
" ez a második sor"
" és így tovább";

Stringek tömbjei

Ha nagy mennyiségű szöveggel dolgozik, mint például egy LCD-kijelzővel rendelkező projekt, akkor gyakran kényelmes karakterláncok tömbjét beállítani. Mivel maguk a karakterláncok tömbök, ez valójában egy kétdimenziós tömb példája.

Az alábbi kódban a char adattípus utáni csillag "char *" azt jelzi, hogy ez "mutatók" ("pointerek") tömbje. Valójában minden tömbnév mutató, ezért ez szükséges egy tömb tömbjének létrehozásához. A mutatók a C++ ezoterikusabb részei közé tartoznak a kezdők számára, de nem szükséges részletesen megérteni a mutatókat, hogy itt hatékonyan használhassuk őket.

Példa

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);
  }
}

Lásd még