String Sınıfı ve Karakter Dizisi İşlemleri
String sınıfı, karakter dizileri olarak bildiğimiz veri türüdür. C++ dilinde string sınıfı temel veri türlerinden birisi değildir. Karakter (char) veri tipinden tek boyutlu diziler olarak ifade edilmektedir. String nesneleri, diğer veri tiplerine benzer şekilde kullanılabilmektedir. String nesnelerine atama yapılabilir, string değişkenleri birleştirilebilir veya parçalanabilir, string değişkenleri arasında karşılaştırma yapılabilir. String sınıfı metin tipindeki bilgilerin saklanması, kullanılması, değiştirilmesi, kıyaslanması, parçalara ayrılması gibi birçok özellik ve üye fonksiyonu içermektedir.
String sınıfı, metin tipindeki verilerde yapılacak işlemleri kolaylaştırması sebebiyle büyük öneme sahiptir. Bu işlemler ana başlıklar olarak tanımlama, bellek fonksiyonları, erişim ve metin düzenleme işlemleri olarak ifade edilebilir. Bir string sınıfı değişkeni diğer veri tiplerinde olduğu gibi, önce değişken tipi, sonrasında değişken adı kullanılarak tanımlanır.
String sınıfının kullanılabilmesi için öncelikle programımızda string sınıfı kütüphanesinin tanımlanması gerekmektedir. String kütüphanesi #include şeklinde tanımlanır. Kütüphaneyi tanımladıktan sonra programımızda string sınıfı değişkenlerini kullanabiliriz. String sınıfında nesne, diğer veri tiplerindeki değişkenlerle aynı şekilde oluşturulmaktadır. Yalnızca veri tipi yerine string ifadesi yazılması yeterlidir. Oluşturduğumuz string sınıfı değişkene, çift tırnaklar arasındaki başta rakamlar ve harfler olmak üzere noktalama işaretleri ve matematiksel işaretler gibi bütün karakterleri atayabiliriz.
String sınıfının üye fonksiyonlarına erişebilmek için tanımladığımız değişkenin adını yazıp devamına “.” koymamız gerekmektedir.
String değişkenlere değer atama konsol ekranından veya dosyadan veri okuyarak yapılabileceği gibi, başka string ifadelerin parçaları da tanımladığımız string ifademize değer olarak atanabilir.
String sınıfının bazı üye fonksiyonları değişkene ait bellek bilgilerinin görüntülenmesini veya düzenlenmesini sağlamaktadır. size ve length üye fonksiyonları string sınıfı değişkenimizin içerdiği karakter sayısını vermektedir. resize üye fonksiyonu değişkenimizin içerdiği karakter sayısının düzenlenmesini sağlamaktadır. Bu üye fonksiyonunu kullanırsak değişkenimizin içerdiği karakterler yeniden belirlenen boyuta göre düzenlenmektedir ve limit dışında olanlar silinmektedir. capacity üye fonksiyonu, string sınıfı değişkenimiz için bellekte ayrılan kapasite bilgisini vermektedir. Kapasite bilgisi boyut bilgisinden farklıdır. Boyut bilgisi değişkenin içerdiği karakter sayısını verirken, kapasite bilgisi 16’nın katlarının bir eksiği olmak üzere bellekte ayrılan yerdir. reserve üye fonksiyonu string sınıfı değişken için bellekte kapasite belirlenmesini sağlamaktadır. Bu üye fonksiyon genelde okunacak karakter sayısının belli olduğu durumlarda önceden yeteri kadar kapasite ayrılması için kullanılmaktadır. clear üye fonksiyonu, string sınıfı değişkenimizin içeriğini tamamen boşaltmakta ve saklanan karakter sayısını sıfırlamaktadır. empty üye fonksiyonu ise string sınıfı değişkenin boş olup olmadığının kontrol edilmesi amacıyla kullanılmaktadır. Eğer değişken karakter içermiyorsa geriye 1 değerini, en az 1 karakter içeriyorsa geriye 0 değerini döndürmektedir.
String sınıfı değişkenlerin içerdikleri karakterlere tek tek de ulaşmak mümkündür. Bu aynı diğer veri tiplerindeki dizilerin her bir elemanına erişmek gibi köşeli parantez kullanarak mümkün olmaktadır. Bu şekilde 0 indisinden başlamak üzere string sınıfı değişkenin her bir karakteri tek tek kontrol edilebilmektedir. Bu işlem için ayrıca at (et) üye fonksiyonu da kullanılabilmektedir. Bu üye fonksiyon da aynen dizi indislerine erişmek gibi bir adet 0 ve büyük pozitif değer alarak geriye string sınıfı değişkenin içerdiği karakter bilgisini döndürmektedir.
Metin düzenleme fonksiyonları, string sınıfı değişkenler için en çok ihtiyaç duyduğumuz üye fonksiyonlarıdır. Bu düzenleme işlemleri kısaca string ifadelerin birleştirilmesi, silinmesi, eklenmesi veya iki değişkenin değerlerinin yer değiştirilmesi olarak açıklanabilir. String sınıfı değişkenin ard arda birleştirilmesi için + (artı) veya += (artı eşittir) operatörü kullanılabilir. Aynı şekilde bu işlevi yerine getirebileceğimiz append üye fonksiyonu da bulunmaktadır. Bu 3 işlemde de iki tane string ifade birleştirilmektedir. push_back üye fonksiyonu ise bu işlemlerden farklı olarak string sınıfı değişkenin sonuna 1 karakter eklemek amacıyla kullanılmaktadır. = (eşittir) operatörü ile yapılan atama işlemi, assign üye fonksiyonu ile de yapılabilmektedir. Daha önce atama yapılmış string sınıfı değişkene yeni bir değer atama işlemi yapılırsa, önceki değer tamamen silinmektedir. Ayrıca insert üye fonksiyonu ile string sınıfı değişkenin istediğimiz bir konumuna başka bir string ifade eklememiz mümkündür. erase üye fonksiyonu ile string sınıfı değişkenimizin istediğimiz parçasını silmemiz mümkündür. replace üye fonksiyonumuz ise erase ve insert üye fonksiyonumuzun işlevlerinin birleşmiş halidir. İstediğimiz bir string ifadeyi başka bir string değişkenin istediğimiz bölgesine yazmak amacıyla kullanılabilir. swap üye fonksiyonumuz iki adet string sınıfı değişkenin değerlerinin değiştirilmesi amacıyla kullanılmaktadır. substr üye fonksiyonu ise bir string ifadenin bir parçasının başka bir string değişkene kopyalanması amacına hizmet etmektedir.
Yukarıdaki ana başlıklarda tanımlanan üye fonksiyonlar ve yöntemler dışında string ifadenin dönüşümü, arama ve karşılaştırma amacıyla kullanılan üye fonksiyonlar ve özel karakter kullanımı da önemli bir yere sahiptir. c_str ve data üye fonksiyonları string ifademizin c string bir ifadeye dönüştürülmesini sağlamaktadır. String ifade ile c string ifade arasındaki fark sadece bellekte c string ifadenin sonunda bir (null) boşluk karakterinin bulunmasıdır. String sınıfı değişkenlerde find komutunu kullanarak arama yapabiliriz. Bu işlemin sonunda aranan metin bulunur ise bu alt metnin başlangıç indisinin bir eksiği geriye değer olarak döndürülmektedir. compare üye fonksiyonu ile iki string ifadenin karşılaştırmasını yapmamız mümkündür. Bu üye fonksiyon klasik karşılaştırma fonksiyonlarından farklı olarak, eğer karşılaştırma işlemi olumlu ise geriye 0 değerini, diğer durumlarda ise karşılaştırılan ifadelerin eksik veya fazla karaktere sahip olmaları durumuna göre -1 veya +1 değerini geriye döndürmektedir. Bunun dışında derleyici için ayrılmış bazı özel karakterlerin string ifadenin içerisinde kullanılabilmesi amacıyla \ (ters slash) karakterinin kaçış karakteri olarak kullanılması gerektiğini bilmek gerekmektedir. Bu karakter ile birlikte n karakteri bir satır alta geçmeyi, t karakteri bir sekme sağa kaymayı, noktalama işaretlerinde ise kullanılan noktalama işaretini yazdırmayı mümkün kılmaktadır.