C++

C++ String Literal nasıl kullanılır?

C++ String Literal nasıl kullanılır?
Bilgisayar klavyesinde üzerlerinde basılı karakterler var. Bir tuşa bastığınızda ekranda karakteri görürsünüz. Not: boşluk da bir karakterdir. Bir dize değişmezi, bir karakter dizisidir. Bu makale, C++ dize değişmezlerinin nasıl kullanılacağını açıklar. Bu makaleyi anlamak için C++ dizileri ve işaretçileri hakkında bilgi sahibi olmalısınız.

Karakter Değişmezi

Karakter değişmezi, tek tırnak içindeki bir karakterdir. Yani,

karakter ident1 = 'A'; karakter ident2 = 'b'; karakter ident3 = '4'; karakter ident4 = '6';

hepsi farklı karakter tanımları. Tek tırnak içindeki bir rakamın bir tamsayı değil bir karakter olduğunu unutmayın.

Tek tırnak içindeki \” (aşağıya bakın) gibi bir kaçış dizisi bir karakterdir. Yani,

karakter kimliği1 = '"';

bir karakterdir.

Çift tırnak içindeki tek bir sembol bir karakter değildir; bu bir karakter dizisidir. Yani "A" veya "c" veya "2" bir karakter değil, her biri bir karakterden oluşan bir dizedir.

Bir karakterin değişkeni, programda daha sonra aşağıdaki gibi yeniden atanabilir:

karakter kimliği = 'x';
kimlik = 'Y';

Bir tanımlayıcıya atanan bir karakterin değiştirilmesini durdurmak için, programın ilerleyen kısımlarında, aşağıdaki gibi ayrılmış kelime olan const ile tanımın önüne gelin:

const karakter kimliği = 'd';

ident değişkeninin salt okunur olduğu söylenir.

Dize Değişmezi

Bir dize değişmezi, çift tırnak içindeki bir karakter dizisidir. Yani,

char ident1[] = "Seni seviyorum"; char ident2[] = "3 kişiden nefret ediyorum"; karakter kimliği3[]
= "biz dünyayız"; char ident4[] = "Merhaba Dünya!";

dize değişmezlerinin hepsi farklı tanımlarıdır. Çift tırnak kullanımına dikkat edin. Bir dize için sıradan bir değişken gibisi yoktur. Bir dize değişmezi, ile sınırlandırmak yerine dizinin "" ile sınırlandırıldığı bir karakter dizisidir. Karakterler virgülle ayrılmamıştır. Dize değişmezindeki karakter sayısından daha büyük herhangi bir sayı köşeli parantez içine yerleştirilebilir. Ancak köşeli parantezleri boş bırakmak daha iyidir.

Çift tırnak içindeki tek bir karakter bir karakter değildir; bu bir karakter dizisidir. Yani "A" veya "c" veya "2" bir karakter değil, her biri bir karakterden oluşan bir dizedir.

Bir dize değişkeni, programın daha sonra aşağısında, tam değişmezin yeniden atanmasına izin vermez - aşağıya bakın. Ancak, tek tek karakterler yeniden atanabilir - aşağıya bakın.

Karakter veya Değişmez Olarak Tek ve Çift Alıntı

Karakter olarak tek bir alıntı yapmak için şöyle bir şey yapın,

karakter kimliği = '\'';

Bir dize değişmezinde karakter olarak çift alıntı yapmak için şöyle bir şey yapın,

char ident[] = "ab"cd";

Ters eğik çizgi, sınırlayıcılarla çakışmayı önlemek için bir kaçış dizisinde kullanılır. Karakter olarak çift alıntı yapmak için ters eğik çizgiye gerek yoktur: '”' tamam. Bir dize değişmezinde tek bir alıntı yapmak için ters eğik çizgiye gerek yoktur:”ab'cd” tamamdır.

Ters eğik çizgi bir karakterden kaçmak için kullanıldığından, karakter olarak veya bir dize değişmezinde kullanıldığında başka bir ters eğik çizgi ile kaçılmalıdır.

Kaçış dizisi

Bir kaçış dizisi şunlardan biridir:

\' " \? \\ \a \b \f \n \r >\t \v

Her kaçış dizisi normalde ya tek tırnak içinde bir karakter olarak ya da çift tırnak içinde bir kaçış dizisi olarak yazılır.

Karakterlerle İşlemler

birleştirme

Tanımda, iki dize değişmez değeri boşlukla aşağıdaki gibi birleştirilebilir:

char ident[] = "abc" "def";
cout << ident << "\n";

Çıktı: abcdef . Bu tanım ikiden fazla değişmeze genişletilebilir. Not: ifade sadece bir atama değil, bir tanımdır. Tanım, satırları aşağıdaki gibi ayırarak bir sonraki satıra bile devam edebilir:

char ident[] = "abc" "def"
"gi";
cout << ident << "\n";

Çıktı, abcdefghi.

Not: Karakter için tek tırnak işaretleri birden fazla sembol içeremeyeceğinden, karakterler bu şekilde birleştirilemez.

Eşitlik Operatörleri

Aynı durumda aynı karakterler eşittir. Aynı durumda değillerse eşit değildirler. Düşünmek,

bool sonuç = 'B' == 'B';
cout << result << "\n";

== eşittir anlamına gelirken = eşit olmayan ve atanan anlamına gelir. Çıktı doğru için 1'dir. Düşünmek,

bool sonuç = 'B' == 'b';
cout << result << "\n";

Çıktı yanlış için 0'dır. Düşünmek,

bool sonuç = 'b' == 'c';
cout << result << "\n";

Çıktı yanlış için 0'dır. Düşünmek,

bool sonucu = 'B' != 'B';
cout << result << "\n";

!= eşit olmayan anlamına gelirken = atanan ve eşit olmayan anlamına gelir. Çıktı yanlış için 0'dır. Düşünmek,

bool sonucu = 'B' != 'b';
cout << result << "\n";

Çıktı doğru için 1'dir. Düşünmek,

bool sonucu = 'b' != 'c';
cout << result << "\n";

Çıktı doğru için 1'dir.

Yani, == ve != eşitlik operatörleridir.

İlişkisel Operatörler

C++'daki sıradan karakterler için, artan sırada sayılar küçük harflerden önce gelen büyük harflerden önce gelir.

Yani < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, >= benzer şekilde açıklanmıştır.

Bir Nesne Olarak Dize Değişmezi

Dizi, belirli bir veri türü dizisinin başlangıcına yönelik sabit bir işaretçidir. Benzer şekilde, dize, bir karakter dizisinin başlangıcına yönelik sabit bir işaretçidir. Aşağıdaki tanımları karşılaştırın:

int dizi[] = 3, 4, 5, 6, 7;
char str[] = 'w', 'o', 'm', 'a', 'n';
char stri[] = "kadın";

İlk dizi bir int dizisidir ve beş elemanı vardır. İkinci ve üçüncü diziler, farklı adlara sahip ancak aynı sayıda öğeye sahip karakter dizileridir. İkinci ve üçüncü diziler aynıdır, ancak adları için. İkinci dizinin metin içeriği parantez ile sınırlandırılmıştır; karakterler virgülle ayrılır ve her karakter tek tırnak içindedir. Üçüncü dizinin metin içeriği çift tırnak ile sınırlandırılmıştır; karakterler virgülle ayrılmamıştır ve her karakter tek tırnak içinde değildir. İkinci ve üçüncü diziler, bir dizi üretmenin iki yoludur, üçüncü yol daha iyi yoldur.

arr, dizisinin ilk öğesinin sabit bir göstergesidir, yani arr, 3'ün değeri değiştirilse bile, her zaman 3 tamsayısına sahip konumu gösterir. Dizinin boyutu, beş eleman, gerçekten sabit kalmıyor. Ancak, dizinin değerlerinin her biri değiştirilebilir.

str, dizisinin ilk öğesinin sabit bir göstergesidir, yani str, 'w' değeri değiştirilse bile, her zaman 'w' karakterine sahip konumu gösterir. Beş elemanlı karakter dizisinin boyutu gerçekten sabit kalmıyor. Ancak, değişmez değerlerin her biri değiştirilebilir.

stri, değişmezinin (dizinin) ilk öğesinin sabit bir göstergesidir, yani stri, w'nin değeri değiştirilse bile, her zaman w karakterine sahip konumu gösterir. Beş elemanlı dize değişmezinin (dizinin) boyutu gerçekten sabit kalmıyor. Ancak, değişmezin değerlerinin her biri değiştirilebilir.

Bir dizide veya dize değişmezinde sabit olan nedir? Dizinin veya değişmezin ilk öğesinin bellek adresi, dizinin veya değişmezin adının (tanımlayıcı) değeri olarak kalır ve değiştirilemez. Peki, dizinin veya değişmezin boyutu gerçekten sabit kalmıyor. Dizideki veya değişmezdeki her değer değiştirilebilir. Aşağıdaki kod, dizilerin her birinin dördüncü öğesinin nasıl değiştirildiğini gösterir:

int dizi[] = 3, 4, 5, 6, 7;
char str[] = 'w', 'o', 'm', 'a', 'n';
char stri[] = "kadın";
dizi[3] = 9;
str[3] = 'e';
stri[3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';

Çıktı:

9
Kadınlar kadınlar
KADIN

Yukarıdaki üçüncü tanımda olduğu gibi, tanımlanmış bir dize değişmezinin öğelerine dizi dizini (alt simge) ile erişilebileceğini unutmayın. Çıktının ikinci satırının nedeni aşağıda verilmiştir.

Tanım Alt Simgesi

Yukarıdaki tanımlarda, indis için tamsayı olmadığına dikkat edin. Elemanların sayısı programcı tarafından kolayca belirlenemediğinde, indis için tamsayı atlanmalıdır. Durum ne olursa olsun, tamsayı dizideki eleman sayısından az olmamalıdır.

Dize değişmezi için tamsayı, dizedeki karakter sayısından en az 1 büyük olmalıdır. Bunun nedeni, boş karakterin (\0) her zaman derleyici tarafından çift tırnakla ayrılmış bir dize olan dizinin sonuna eklenmesidir. Resmi bir dize olmadığı için yukarıdaki ikinci dizinin sonuna boş karakter eklenmez. Üçüncü dizi resmi bir dizedir. Aşağıdaki kod, minimum alt simge değerlerini gösterir.

int dizi[5] = 3, 4, 5, 6, 7;
char str[5] = 'w', 'o', 'm', 'a', 'n';
char stri[6] = "kadın";

İkinci tanımı resmi bir dizge yapmak için boş karakterin aşağıdaki gibi eklenmesi gerekir:

int dizi[5] = 3, 4, 5, 6, 7;
char str[6] = 'w', 'o', 'm', 'a', 'n', '\0';
char stri[6] = "kadın";

Çıktı şimdi olmalıdır,

9
KADIN
KADIN

ikinci “kadınlar” olmadan. İkinci dizi için karşılık gelen alt simgenin eskisi gibi 5 değil 6 olduğuna dikkat edin.

Sabit Değişmez Değerler

Bir tanımlayıcıya atanan çift tırnak içindeki herhangi bir karakterin değiştirilmesini durdurmak için, programın ilerleyen kısımlarında, tanımın önüne, aşağıdaki gibi ayrılmış kelime olan const ekleyin:

const char ident[] = "Seni seviyorum";

Dize Değişmezleri ile İşlemler

Eşitlik İşlemleri

Eşitlik operatörleri == ve != . İki dizgenin değişkenleri (tanımlayıcıları) karşılaştırıldığında, karşılaştırılan, değişmez değerlerin işaretçileridir (adresleri); bu yanlış. Dizeleri karşılaştırmak için, aşağıdaki kodda olduğu gibi değişmez değerlerin karşılaştırılması gerekir:

bool sonucu = "kadın" == "kadın";
cout << result << '\n';

Çıktı doğru için 1'dir. Karşılaştırma sözlük tarzında yapılır, ancak sayılar artan sırada, küçük harflerden önce gelen büyük harflerden önce gelir. Aşağıdaki kodun çıktısı false için 0'dır.

bool sonucu = "kadın" != "kadın";
cout << result << '\n';

Dize Değişmezlerine Sahip İlişkisel Operatörler

İlişkisel operatörler dize değişmezleriyle çalışmaz.

Ham Dize Değişmezi

Bir ham dize değişmezi, bir dizenin yazıldığı gibi görüntülenmesine izin verir, kaçış dizilerini yok sayar ve yeni satırlara uyar. Aşağıdaki kodu göz önünde bulundurun:

char str[] = R"(abc\\d efg hij
klmn \n " ' opq
ilk)";
cout << str << '\n';

Çıktı:

abc\\d efg hij
klmn \n " ' opq
ilk

Kodda, ham dize değişmez değeri R ile başlar, ardından ” ve ( . ) ve “ ile biter.

C++ Ana Dize Değişmez Türleri

karakter

Char tipi orijinal C++ tipidir ve tipik olarak 8 bitlik bir karakter saklar.

karakter16_t

Bu, bir karakteri 16 bitte saklar.

char32_t

Bu, bir karakteri 32 bitte saklar.

wchar_t

char16_t ve char32_t geniş karakterlerdir. wchar_t, tescilli ve uygulama tanımlı geniş bir karakterdir.

Sonuç

Bir karakter değişmezi, tek tırnak içindeki tek bir karakterdir. Kaçış dizisi, tek tırnak içinde de olabilen bir karakterdir. Bir dize değişmezi, çift tırnak içindeki bir karakter dizisidir. Bir dize değişmez değeri, \0 ile biten bir karakter dizisidir. Eşitlik ve ilişkisel operatörler, karakter değişmezleriyle çalışır. Eşitlik işleçleri dize değişmezleriyle çalışır, ancak ilişkisel işleçler dize değişmezleriyle çalışmaz. Karşılaştırmalarda karakter tanımlayıcıları kullanılabilir, ancak karşılaştırmalarda dize tanımlayıcıları kullanılmamalıdır. Ham dize değişmez değeri, kaçış dizilerini yok sayarak ve yeni satırlara saygı duyarak bir dizenin yazıldığı gibi görüntülenmesine izin verir.

Chrys

Linux Eğitimi için Tomb Raider'ın Gölgesi
Shadow of the Tomb Raider, Eidos Montreal tarafından yaratılan bir aksiyon-macera oyunu serisi olan Tomb Raider serisine eklenen on ikinci oyundur. Oy...
Linux'ta FPS Nasıl Arttırılır?
FPS'nin kısaltması Saniyedeki Kare Sayısı. FPS'nin görevi, video oynatma veya oyun performanslarındaki kare hızını ölçmektir. Basit bir deyişle, her s...
En İyi Oculus Uygulama Laboratuvarı Oyunları
Oculus başlık sahibiyseniz, yandan yükleme hakkında bilgi sahibi olmalısınız. Sideloading, kulaklığınıza mağaza dışı içerik yükleme işlemidir. SideQue...