std::string | Karakter silme işlemleri

C++ ile string ifadeler içinde silme/ekleme yapabilmek için kullanabileceğimiz erase fonksiyonunun temel olarak 3 farklı çağırma biçimi vardır. Şimdi çağırma biçimlerini sırasıyla inceleyelim.

erase fonksiyonu template bildirimi

Karakter dizisi içinde bir bölümü silme

Aşağıdaki örnek yukarıda üç gruba ayrılmış olan erase'in ilk template bildirimine ilişkin olup erase çağrısı sırasında verilen iki parametreden birincisi string veri yapısı içerisinde hangi indeks değerinden itibaren sileceğini, ikinci parametre ise silinecek parçanın uzunluğunu ifade eder.  2. parametre varsayılan arguman olarak std::string::npos olarak bildirilmiştir.  Bu sayede 2. parametreyi geçirmezsek 1. parametrede verilen değerden başlayarak ifadenin sonuna kadar silme işlemini gerçekleştirir. 1. parametreye varsayılan arguman geçildiğinde ise silme işlemi  0 indeks değerinden başlamaktadır.  Son olarak bu grupta yer alan erase 'in geri dönüş değeri ise *this nesnesidir. 

erase örneği - 1
Yukarıdaki kullanım en temel kullanım biçimidir ve sadece 1. parametre geçilmiştir. Bu da yukarıda anlattığımız gibi ifadenin sonuna kadar silecektir. Aşağıda ise programın çıktısı görülmekte ve beklenen şekilde 16.  indeks değerinden itibaren silme işlemi gerçekleşmiştir. 

örnek - 1 : çıktı
Aşağıdaki örnek C++11 ile gelen 3. template bildirimi örneğine ilişkin olup erase çağrısı sırasında verilen iki parametreden birincisi başlangıç iteratör değeri, 2. parametre ise  silinecek son elemanın iteratör değeri şeklindedir. Bir aralık silmek için iteratör değeri kullanmak gerekmektedir.

erase örneği - 2
Yukarıdaki örnekte başlangıçtan 4 ilerideki iteratör değerinden başlayarak, son değerden bir sonrakini gösteren end iteratör değerinden 9 gerisine kadar bölgenin silinmesi istenmektedir. Aşağıda ise beklenen çıktı görülebilmektedir.

örnek - 2 : çıktı

Karakter dizisi içinde bir noktayı silme

Aşağıdaki örnek ise C++11 ile gelen 2. grup template bildirimi örneğine ilişkin erase çağrı türü olup parametre olarak iteratör değeri geçirilerek sadece 1 değerin silinmesi sağlanmıştır.

erase örneği - 3
Aşağıda ise programın çıktısı görülmekte ve beklenen şekilde 1.  indeks değerinin silinme işlemi gerçekleştiği görülmektedir.

örnek - 3  : çıktı

erase ile birlikte çeşitli kullanım idiyomları

Aşağıdaki örnek find - erase ikilisi ile belirli bir karakterin tümünün string ifade içinden silinmesine ilişkindir. find fonksiyonu ile silinmek istenen karakterin indeks değerinin bulunması ve indeks değeri ile erase çağrısının gerçekleştirilmesi üzerinedir. Bu sırada erase çağrısına 2. parametre olarak 1 değerinin geçilmesi sadece bir karakterin silinmek istenmesinden dolayıdır. Aksi halde string'i sonuna kadar sileceğini yukarıda açıklamıştık.

erase örneği - 4
Aşağıda ise programın çalışmasını ve çıktısının beklenen şekilde olduğu rahatlıkla görülmektedir.

örnek - 4 : çıktı
Aşağıdaki örnekte ise yukarıdaki gibi döngü kullanmadan remove - erase idiyomu ile yukarıdaki gibi istenen belirli karakterin tamamı silinebilmektedir.

erase örneği - 5
Aşağıda ise örnek - 4 'e benzer bir çıktı sağlandığı görülebilmektedir. 

örnek - 5 : çıktı
Aşağıdaki örnekte ise remove_if - erase beraber kullanılarak string içindeki rakamların tamamı silinmiştir.

erase örneği - 6
Programın çıktısı ise aşağıdaki gibidir.

örnek - 6 : çıktı
Aşağıdaki örnekte ise insert - erase beraber kullanılarak string içindeki belli bir blok silinmiş ve yerine karakter ekleme yapılmıştır.

erase örneği - 7
Aşağıda program çıktısı olarak 2017 'nin silindiği yerine X ifadesinin eklendiği görülmektedir.

örnek - 7 : çıktı