strings c with examples
C ++ 'da Dizelerin Temellerine Yoğun Bir Bakış.
Bu C ++ serisinde, şimdiye kadar çoğunlukla C ++ 'da sayısal dizileri tartıştık. Bu eğitimde, basitçe 'Dizeler' olarak adlandırdığımız karakter dizileri ile manipülasyonu tartışacağız.
Karakter dizisi çoğunlukla C ++ 'nın desteklediği C-stili bir dizedir. C-stili karakter dizilerine ek olarak, C ++ ayrıca “std :: string” dizge sınıfını destekler. Ayrıca, bu eğiticide, hem dize türlerini hem de aralarındaki farkı ve her türü C ++ 'da programlamayı tartışacağız.
=> Bu Serideki C ++ Öğreticilerinin Tam Listesine Dikkat Edin.
Ne öğreneceksin:
Karakter Dizileri (C tarzı dizeler)
C-stil dizesi, ' 0' boş karakteriyle sonlandırılmış bir karakter dizisidir. Bu nedenle, char türünde bir dizi ve dizilerin boyutlarını veya boyutunu tanımlayabiliriz ve sonra onu bir karakter dizisine veya dizisine başlatabiliriz.
Bir dizgeyi boş karakterle sonlandıranın derleyici olduğuna dikkat edin, bu nedenle karakter dizisini bir dizeyle (çift tırnak '' içinde) başlatırsak, dizinin boyutunu bildirirken boş karakter için fazladan boşluk bırakmamız gerekir. .
Karakter dizilerini bildirmek ve başlatmak için bazı Örnekler alalım.
char firstStr() = 'This is Cstyle string'; char secStr(100) = {'s','o','f','t','w','a','r','e',' ','t','e','s','t','i','n','g',' ','h','e','l','p',' '}; char thirdStr() = {'h','e','l','l','o',' '};
Yukarıdaki tanımların tümü, C ++ 'da geçerli C tarzı dize tanımlarıdır. Ya gerçek boyutu bildirebiliriz ya da boyutu boş bırakabiliriz, böylece derleyici başlattığımız dizeye bağlı olarak boyutu barındırabilir.
Hadi bir Misal C ++ 'da karakter dizisini okuma ve yazma
Aşağıda cin kullanarak dizeyi okuyan ve cout kullanarak çıktı veren basit bir program verilmiştir.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Çıkış 1:
SoftwareTestingHelp.com
girdiniz: SoftwareTestingHelp.com
Çıktı 2:
Bu C tarzı dizedir
girdiniz: Bu
Her iki çıktıyı da karşılaştırırsak, “SoftwareTestingHelp.com” ilk dizesine girdiğimizde olduğu gibi yazdırıldığını görürüz.
Ancak ikinci çıktıda dizgeye 'Bu C-tarzı dizge' olarak girmemize rağmen çıktı sadece 'Bu' idi.
Çıktıdaki fark, dizeyi okumak için kullanılan cin '>>' operatörünün, yalnızca karşılaşılan boşluğa kadar okuyan C'nin 'scanf' işlevi olarak değerlendirilmesidir. Dolayısıyla, 'cin with >>' karakter dizilerini boşluksuz okumak için uygundur.
yazılım testinde hataların sınıflandırılması
Dolayısıyla, ikinci çıktı uzayıyla karşılaşılırken, cin işlevi onu dizenin sonu olarak aldı ve yalnızca ilk sözcüğü okudu.
Boşluklar dahil tüm bir karakter satırını okumak için, C ++ 'get' işlevini kullanır.
Get işlevini kullanan bir Örnek program aşağıda gösterilmiştir:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Çıktı:
Bu, softwareTestinghelp.com
sen girdin: Bu, softwareTestinghelp.com
Örnekte gösterildiği gibi , cin'in get işlevi iki argüman kullanır. İlk argüman, dizenin okunacağı karakter dizisi değişkenidir, ikinci argüman ise dizinin maksimum boyutudur.
C-stili dizgiler, kullanıcıların dizeleri değiştirmesine izin veren çok sayıda dizgi işlevini de destekler. Bu işlevler 'cstring' başlığında tanımlanmıştır.
Aşağıda, C tarzı dizgileri işlemek için kullanılabilecek çeşitli dize işlevlerini listeleyen bir tablo sunuyoruz.
Yapma Fonksiyon Argümanlar Açıklama 1 strcpy s1, s2 String s2'yi string s1'e kopyalar iki strcat s1, s2 S2 dizesini s1 dizesinin sonuna ekler veya birleştirir 3 gergin s1 S1 dizesinin uzunluğunu verir 4 strcmp s1, s2 0: s1 ve s2 aynıdır
<0:s1 > 0: s1> s2 5 strchr s1, ch S1 dizesinde ch karakterinin ilk oluşumuna bir işaretçi ve oradan itibaren dizge döndürür 6 strstr s1, s2 S1 dizesinde s2 dizesinin ilk oluşumunu döndürür
Aşağıdaki program, bu işlevlerden bazılarının C ++ 'da kullanımını gösterir:
#include #include using namespace std; int main() { char firstStr(50) = 'This is softwareTestingHelp.com'; char secStr(50) = 'a testing platform'; int len = strlen(firstStr); cout<<'Length of firstStr : '< Çıktı:
FirstStr uzunluğu: 31
Sonuç dizisi (secStr): softwareTesting
FirstStr ve secStr karşılaştırılıyor: -31
Birleştirilmiş secStr: yazılım sizin için test
İ'nin ilk dizede ilk oluşumu: s softwareTestingHelp.com
C ++ 'da Dize Sınıfı
“Std :: string” sınıfı tarafından tanımlanan C ++ dizgisi, karakterlerin bir nesneye akışının temsilidir. Başka bir deyişle, String sınıfı, dizgi nesnelerinin bir koleksiyonudur. Bu dize sınıfı, std ad alanının bir parçasıdır ve 'string.h' başlığında tanımlanmıştır.
Dize sınıfı ve karakter dizisi arasındaki bazı temel farklılıkları tartışalım.
- Yukarıda tartıştığımız karakter dizileri derleme süresi boyunca statik olarak tahsis edilirken, dizeler nesnelerdir ve dolayısıyla dinamik olarak tahsis edilebilir.
- Karakter dizileri yapıları gereği statik olduklarından, tanımlandıktan sonra küçültülemez veya genişletilemezler. Dolayısıyla, 100 boyutunda bir karakter dizimiz varsa ve onu 'Merhaba' olarak başlatırsam, kalan alan boşa gider.
Char mystr (100) = 'Merhaba';
Burada kalan 95 lokasyon boşa gidiyor.
Bunun aksine, dizgi nesneleri doğası gereği dinamiktir ve değer için tam alanı kaplar.
- Karakter dizileri daha hızlı performans gösterirken dizeler daha yavaştır.
- Karakter dizilerinin, onları işleyebilen birkaç işlevi vardır. String sınıfı, yineleyici işlevleri dahil olmak üzere çok sayıda işleve sahiptir.
Bunlar, karakter dizisi ile dize nesne sınıfı arasındaki temel farklardan bazılarıdır.
Daha sonra, string sınıfının nesneleri üzerinde gerçekleştirilen bazı temel işlemlerin yanı sıra birkaç string sınıfı örneği göreceğiz.
String sınıfını bildirmek ve başlatmak için bir Örnek.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<Yukarıdaki örnekte, 'string' sınıfını kullanarak bir dizge nesnesi bildirdik ve başlattık. Bu basit bir örnek. Şimdi, kullanıcıdan dizeyi okuyacak bir programa sahip olalım ve uzunluğu bulma ve iki dizeyi karşılaştırma dahil olmak üzere birkaç dize işlevi gösterelim.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Çıktı:
Dizeyi girin
Yazılım TestiYardım
Girilen dize: SoftwareTestingHelp
String dizisinin uzunluğu: 19
İki dizi eşittir
Yeni str1: SoftwareTestingHelp.com
str yeni uzunluk: 0
Yukarıdaki resimde, dizeleri işlemek için çok sayıda dizge işlevi kullandık. Dizgeyi bildirdikten sonra, dizgeyi standart girdiden okumak için dize sınıfının 'getline' işlevini kullanırız.
Dizeyi okuduktan sonra uzunluğunu 'length' işlevini kullanarak buluruz. Eşit olup olmadıklarını değerlendirmek için iki dizgeyi karşılaştırmamız gerekirse, dize sınıfının 'karşılaştırma' işlevini kullanabiliriz. İşlev 0 döndürürse, iki dize eşittir, aksi takdirde işlev sıfır olmayan bir değer döndürür.
Yine başka bir işlev, mevcut dizginin sonuna başka bir dizge eklemektir. Bu, 'ekleme' işlevidir. Bu örnekte, 'softwaretesting' değeriyle zaten var olan str1 dizesine '.com' ekliyoruz.
Örnekteki son işlev, çağrılan dizge nesnesinin içeriğini temizlemek için kullanılan temizleme işlevidir. Bu örnekte, str nesnesinin içeriğini, uzunluğu 0 olacak şekilde temizliyoruz.
Sonuç
Bu eğitimde, dizge sınıfının temelleri ile birlikte C-stili dizeler olarak da adlandırılan karakter dizisini ele aldık. String sınıfı, bir konteyner sınıfı olduğu için yineleyici sınıfı gibi daha fazla yardımcı programla birlikte gelir.
Önümüzdeki STL eğitimlerimizde string sınıfı ve işlevleri hakkında daha fazlasını göreceğiz !!
=> Herkes İçin C ++ Eğitim Serisini Görmek İçin Burayı Ziyaret Edin.
Önerilen Kaynaklar
- Örneklerle C ++ 'da Kabuk Sıralama
- Örneklerle C ++ 'da Tarih ve Saat İşlevleri
- String Buffer ve String Builder Eğitimi ile Java String
- Örneklerle C ++ 'da Seçim Sırala
- Python Dizesi İşlevleri
- Örneklerle Python DateTime Eğitimi
- Örneklerle Unix'te Kesme Komutu
- ÜCRETSİZ C ++ Programlamayı Öğrenmek İçin 70+ EN İYİ C ++ Öğreticisi