string

Tanımı

Metin(string) dizeleri iki şekilde temsil edilebilir. 0019 sürümünden itibaren çekirdeğin bir parçası olan String veri türünü kullanabilir veya bir dizi char türünden bir dize oluşturabilir ve onu boş sonlandırabilirsiniz.

Yazımı

Aşağıdakilerin tümü, dizeler için geçerli bildirimlerdir.

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


Dizeleri bildirme olanakları

Str1'deki gibi başlatmadan bir dizi karakter bildirin

Bir karakter dizisi (fazladan bir karakterle) bildirin ve derleyici, Str2'deki gibi gerekli boş karakteri ekleyecektir.

Açıkça boş karakter ekleyin, Str3

Tırnak işaretleri içinde bir dize sabiti ile başlat; derleyici, diziyi dize sabitine ve sonlandırıcı bir boş karakter olan Str4'e uyacak şekilde boyutlandıracaktır.

Diziyi, açık bir boyut ve dize sabiti olan Str5 ile başlat.

Daha büyük bir dize için fazladan boşluk bırakarak diziyi başlatın, Str6

"null" sonlandırma

Genellikle, dizeler bir boş karakterle (ASCII kodu 0) sonlandırılır. Bu, işlevlerin (Serial.print() gibi) bir dizenin sonunun nerede olduğunu söylemesine izin verir. Aksi takdirde, aslında dizenin parçası olmayan sonraki bellek baytlarını okumaya devam edecektir.

Bu, dizginizin içermesini istediğiniz metinden bir karakter fazlasına sahip olması gerektiği anlamına gelir. Bu nedenle, "arduino" yalnızca yedi olmasına rağmen Str2 ve Str5'in sekiz karakter olması gerekir - son konum otomatik olarak boş bir karakterle doldurulur. Str4, biri ekstra boş değer için olmak üzere, otomatik olarak sekiz karaktere boyutlandırılacaktır. Str3'te, boş karakteri ('\0' ile yazılmış) kendimiz açıkça ekledik.

"final null character(son boş karakter)" içermeyen bir dizeye sahip olmanın mümkün olduğunu unutmayın (örneğin, Str2'nin uzunluğunu sekiz yerine yedi olarak belirtmiş olsaydınız). Bu, dizeleri kullanan çoğu işlevi bozacaktır, bu nedenle kasıtlı olarak yapmamalısınız. Bir şeyin garip davrandığını (dizede olmayan karakterler üzerinde çalıştığını) fark ederseniz, sorun bu olabilir.


"null" sonlandırma

Genellikle, dizeler bir boş karakterle (ASCII kodu 0) sonlandırılır. Bu, işlevlerin (Serial.print() gibi) bir dizenin sonunun nerede olduğunu söylemesine izin verir. Aksi takdirde, aslında dizenin parçası olmayan sonraki bellek baytlarını okumaya devam edecektir.

Bu, dizginizin içermesini istediğiniz metinden bir karakter fazlasına sahip olması gerektiği anlamına gelir. Bu nedenle, "arduino" yalnızca yedi olmasına rağmen Str2 ve Str5'in sekiz karakter olması gerekir - son konum otomatik olarak boş bir karakterle doldurulur. Str4, biri ekstra boş değer için olmak üzere, otomatik olarak sekiz karaktere boyutlandırılacaktır. Str3'te, boş karakteri ('\0' ile yazılmış) kendimiz açıkça ekledik.

"final null character(son boş karakter)" içermeyen bir dizeye sahip olmanın mümkün olduğunu unutmayın (örneğin, Str2'nin uzunluğunu sekiz yerine yedi olarak belirtmiş olsaydınız). Bu, dizeleri kullanan çoğu işlevi bozacaktır, bu nedenle kasıtlı olarak yapmamalısınız. Bir şeyin garip davrandığını (dizede olmayan karakterler üzerinde çalıştığını) fark ederseniz, sorun bu olabilir.


Tek tırnak mı çift tırnak mı?

Dizeler her zaman çift tırnak ("Abc") içinde tanımlanır ve karakterler her zaman tek tırnak ('A') içinde tanımlanır.

Uzun dizeleri sarma(Wrapping long strings)

Uzun dizeleri bu şekilde sarabilirsiniz:

char myString[] = "Bu ilk satır"

" Bu ikinci satır"

" ve benzeri";

Metinlerin dizileri(Arrays of strings)

LCD ekranlı bir proje gibi büyük miktarda metinle çalışırken, bir "string" e dizi ayarlamak genellikle uygundur. Dizelerin kendileri dizi olduğundan, bu aslında iki boyutlu bir dizi örneğidir.

Aşağıdaki kodda, char "char*" veri tipinden sonraki yıldız işareti, bunun bir "pointer" dizisi olduğunu gösterir. Tüm dizi adları aslında işaretçilerdir, bu nedenle bir metin dizisi oluşturmak için bu gereklidir. İşaretçiler, yeni başlayanlar için C++'ın daha ilerleyen bölümlerinden biridir, ancak burada bunları etkili bir şekilde kullanmak için işaretçileri ayrıntılı olarak anlamak gerekli değildir.

Örnek Kod
                
char *myStrings[] = {"Metin 1", "Metin 2", "Metin 3",
"Metin 4", "Metin 5", "Metin 6"};
 void setup() {
    Serial.begin(9600);
}
void loop() {
    for (int i = 0; i < 6 ; i++)
}
Serial.println(myStrings[i]);
delay(500);
   }
}