C++'da substr() işlevi nasıl kullanılır?

How Use Substr Function C



Bir dizeden herhangi bir bölümü kesmenin yoluna alt dize denir. substr() işlevi, bir dizeden belirli bir kısmı keserek yeni bir dize oluşturmak için C++'da bulunur. NS dize.h Bu işlevi kullanmak için kitaplık dosyasının eklenmesi gerekir. Bu fonksiyonun iki argümanı vardır. İlk argüman, yeni dizenin başlangıç ​​konumunu ve ikinci argüman dizenin uzunluğunu içerir. C++'da substr() işlevini kullanmanın yolu bu eğitimde açıklanmıştır.

Ön koşul

Bu öğreticinin örneklerini kontrol etmeden önce, sistemde g++ derleyicisinin kurulu olup olmadığını kontrol etmelisiniz. Visual Studio Code kullanıyorsanız, yürütülebilir kodu oluşturmak için C++ kaynak kodunu derlemek için gerekli uzantıları yükleyin. Burada, C++ kodunu derlemek ve yürütmek için Visual Studio Code uygulaması kullanılmıştır.







Sözdizimi

string substr (size_t konum = 0, size_t uzunluk = npos) const;



Burada, ilk argüman alt dizenin başlayacağı başlangıç ​​konumunu ve ikinci argüman alt dizenin uzunluğunu içerir. Geçerli başlangıç ​​konumu ve uzunluk verilirse işlev alt dizeyi döndürür. Bu işlevin çeşitli kullanımları, bu öğreticinin sonraki bölümünde gösterilmiştir.



Örnek 1: substr()'nin basit kullanımı

Aşağıdaki örnek, substr() işlevinin en yaygın ve basit kullanımını gösterir. Bir dize değerinden bir alt dize oluşturmak için aşağıdaki kodla bir C++ dosyası oluşturun. Bir dize değişkenine birden çok sözcükten oluşan bir dize atanmıştır. Ardından, geçerli başlangıç ​​konumu ve alt dizenin uzunluğu, substr() işlevinin bağımsız değişken değerlerinde bulunur. Kod yürütüldükten sonra hem orijinal dize hem de alt dize yazdırılacaktır.





//Gerekli kitaplıkları dahil et
#Dahil etmek
#Dahil etmek


intana() {
// Bir dize değişkeni tanımlayın
saat::sicimorijinalstr='Linuxhint'e hoş geldiniz';
// substr() kullanarak alt dizeyi kesin
saat::sicimhaber=orijinalstr.alt dizi (on bir,9);
//Orijinal dizgiyi yazdır
saat::maliyet <<'Orijinal dize:' <<orijinalstr<< ' ';
//Alt dizeyi yazdır
saat::maliyet <<'Alt dize:' <<haber<< ' ';

dönüş 0;
}

Çıktı:

Koda göre, orijinal dize ' LinuxHint'e hoş geldiniz '. 11, 'L' karakterinin konumu olan alt dizenin başlangıç ​​konumu olarak, 9 ise alt dizenin uzunluk değeri olarak verilmiştir. ' Linuxİpucu ', kodu çalıştırdıktan sonra substr() işlevinin çıktısı olarak döndü.



Örnek 2: Belirli bir dizenin konumuna göre substr() kullanma

Aşağıdaki kod, belirli bir dizenin konumunu aradıktan sonra alt dizeyi oluşturacaktır. Kodu test etmek için aşağıdaki kodla bir C++ dosyası oluşturun. Kodda birden çok kelimenin bir dize değeri tanımlanmıştır. Daha sonra, belirli bir dizgenin konumu ana dizgede find() işlevi kullanılarak aranır. substr() işlevi, dizenin başından başlayarak find() işlevi tarafından döndürülecek konum değerine kadar olan alt dizeyi oluşturmak için kullanılmıştır.

//Gerekli kitaplıkları dahil et
#Dahil etmek
#Dahil etmek
kullanarak ad alanısaat;

intana()
{
saat::sicimstrData= 'C++ programlamayı seviyorum';

// str.find() kullanarak '--' konumunu bulalım
intkonum=strData.bulmak('programlama');

// Bu kalıba kadar alt diziyi alacağız
saat::sicimhaber=strData.alt dizi(0, konum);

saat::maliyet <<strData<< ' ';
saat::maliyet <<haber<< ' ';

dönüş 0;
}

Çıktı:

Koda göre, ana dize değeri, C++ programlamayı severim ve arama dizesinin değeri, ' programlama' ana dizide var olan. Yani, çıktı, ' C++'ı severim ' kodu çalıştırdıktan sonra.

Örnek 3: İstisna işleme ile substr() kullanımı

substr() işlevi, aşağıdaki kodda istisna işleme ile kullanılmıştır. substr() işlevinde geçersiz başlangıç ​​konumu verilirse istisna oluşturulur. Kodu test etmek için aşağıdaki kodla bir C++ dosyası oluşturun. try bloğunda, bir kelimelik bir dize değeri atanmıştır ve substr() işlevinde bir istisna oluşturacak ve hata mesajını yazdıracak geçersiz bir başlangıç ​​konumu kullanılmıştır.

//Gerekli kitaplıkları dahil et
#Dahil etmek
#Dahil etmek

intana() {
denemek{

// Bir dize değişkeni tanımlayın
saat::sicimorijinalstr='Linuxhint';
// substr() kullanarak alt dizeyi kesin
saat::sicimhaber=orijinalstr.alt dizi (on bir,9);
//Alt dizeyi yazdır
saat::maliyet <<'Alt dize:' <<haber<< ' ';
}
tutmak (constsaat::out_of_range) {
saat::sertifika << 'Pozisyon Menzil dışında. ';
}
dönüş 0;
}

Çıktı:

Koda göre, ana dize değeri, Linuxİpucu ve başlangıç ​​pozisyonunun değeri mevcut olmayan 11'dir. Bu nedenle, istisna oluşturuldu ve kod yürütüldükten sonra hata mesajı yazdırıldı.

Örnek 4: dizeyi bölmek için substr() kullanma

Aşağıdaki örnek, bir sınırlayıcıya dayalı olarak bir dizeyi bölmek için substr() işlevinin kullanımını gösterir. Ayırıcı konumunu aramak için find() işlevi ve sınırlayıcıyla bölünmüş dizeyi ana dizeden çıkarmak için delete() işlevi kullanılmıştır. 'while' döngüsü, sınırlayıcının ana dizideki tüm konumlarını bulmak ve bölünmüş değeri vektör dizisine depolamak için kullanılmıştır. Daha sonra vektör dizisinin değerleri yazdırılmıştır.

//Gerekli kitaplıkları dahil et
#Dahil etmek
#Dahil etmek
#Dahil etmek

intana(){
// dizeyi tanımla
saat::sicimstringData= 'PHP:C++:Python:';
// Ayırıcıyı tanımlayın
saat::sicimayırıcı= ':';
// Vektör değişkenini bildir
saat::vektörDiller{};
//Tamsayı değişkeni bildir
intkonum;
//Dize değişkeni bildir
saat::sicimdışarı;
/ *
substr() işlevini kullanarak dizeyi ayırın
ve bölünmüş kelimeyi vektöre ekleyerek
* /

süre ((konum=stringData.bulmak(ayırıcı)) !=saat::sicim::npos) {
Diller.Geri itmek(stringData.alt dizi(0, konum));
stringData.silmek(0, konum+ayırıcı.uzunluk());
}
//Bölünmüş tüm kelimeleri yazdır
için (const Oto &dışarı:Diller) {
saat::maliyet <<dışarı<<saat::son;
}
dönüş 0;
}

Çıktı:

Koda göre, ana dize değeri PHP:C++:Python ve sınırlayıcının değeri, ' : ' . Yukarıdaki betiği çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Çözüm

substr() işlevini kullanmanın temel amacı, alt dizenin başlangıç ​​konumunu ve uzunluğunu belirterek bir dizeden bir alt dize almaktır. Bu işlevin çeşitli kullanımları, bu öğreticide, yeni C++ kullanıcılarının onu kodlarında düzgün bir şekilde kullanmalarına yardımcı olmak için birden çok örnek kullanılarak açıklanmıştır.