C++ Dize Fonksiyonu: strcpy(), strcat(), strlen(), strcmp() Örnek
Dize nedir?
Bir dize, bir karakter dizisidir. A C++ string std::string sınıfının bir nesnesidir. Karakterler, tek bir karakter baytına erişime izin verilen bayt dizileridir.
C++ dizeler belleği dinamik olarak ayırır. Gerektiğinde çalışma zamanı sırasında dizeye daha fazla bellek ayrılabilir. Bellek ön ayırması olmadığından, bellek israfı olmaz. Karşılaştırmalar, birleştirme, dönüştürme vb. dahil olmak üzere dizeler üzerinde çeşitli işlemler gerçekleştirebiliriz.
Dizeleri Bildirmek
C++ iki tür dize bildirimini destekler:
- C tarzı karakter dizisi
- Dize sınıfı türü
C-Stil Karakter Dizesi
Bu tür dize bildirimi şu tarihte tanıtıldı: C programlama dili. C++ desteklemeye devam ediyor. Bu sadece boş bir karakterle (\0) sonlandırılmış tek boyutlu bir karakter dizisidir. Null ile sonlandırılmış bir dize, dizeyi oluşturan ve ardından bir null gelen karakterlere sahiptir.
Aşağıda verilen dize bildirimini göz önünde bulundurun:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Yukarıdaki bildirim, John kelimesini oluşturan bir dize oluşturur. Sözcüğün 4 karakteri vardır, ancak dizenin boyutu 5'tir. Ekstra boşluk boş karakterin tutulmasına izin verir.
Dizi başlatma kuralını kullanarak yukarıdaki ifadeyi aşağıdaki gibi yazabiliriz:
char name[] = "John";
Boş karakteri dize sabitinin sonuna yerleştirmeniz gerekmediğini unutmayın. C++ derleyici, diziyi başlatırken '\0'ı otomatik olarak dizenin sonuna yerleştirecektir.
standart::dize
Standart C++ kütüphane çeşitli dize işlemlerini destekleyen dize sınıfını sağlar. std::string olarak yazılır.
Bu sınıfı kullanmak için önce aşağıda gösterildiği gibi #include önişlemcisini kullanarak onu çalışma alanımıza dahil etmeliyiz:
#include<string>
Daha sonra string anahtar sözcüğünü kullanarak dizemizi bildirebiliriz. Örneğin:
string name = "John";
Yukarıdaki ifade, John değerini tutacak name adında bir dize yaratacaktır.
Dize Değerlerine Erişim
In C++dize adını kullanarak dize değerlerine erişebiliriz. Örneğin:
#include <iostream>
using namespace std;
int main() {
char name[5] = { 'J', 'o', 'h', 'n', '\0' };
cout << "String value is: ";
cout << name << endl;
return 0;
}
Çıktı:
İşte kodun ekran görüntüsü:
Kod Açıklaması:
- iostream başlık dosyasını kodumuza dahil ediyoruz. Konsoldan okumamıza ve konsola yazmamıza olanak tanıyacak.
- Sınıflarını ve işlevlerini çağırmadan kullanabilmek için std ad alanını dahil etmek.
- Program mantığının eklenmesi gereken main() fonksiyonunun çağrılması. {, main() işlevinin gövdesinin başlangıcını işaretler.
- Bir karakter dizisi bildirmek ve ona ad adını vermek. Dize John değerini saklayacaktır. Ekstra boşluk boş karakteri saklayacaktır.
- Konsolda bazı metinlerin yazdırılması.
- name isimli stringin değerinin konsolda yazdırılması.
- Program düzgün çalışıyorsa main() işlevi bir değer döndürmelidir.
- Main() işlevinin gövdesinin sonu.
İşte başka bir örnek C++ standart dize sınıfı:
#include <iostream>
#include <string>
using namespace std;
int main() {
string name = "Guru99";
cout << "The name is : " << name << endl;
return 0;
}
Çıktı:
İşte kodun ekran görüntüsü:
Kod Açıklaması:
- iostream başlık dosyasını kodumuza dahil ediyoruz. Konsoldan okumamıza ve konsola yazmamıza olanak tanıyacak.
- Standart string sınıfını kodumuza dahil etmek.
- Sınıflarını ve işlevlerini çağırmadan kullanabilmek için std ad alanını dahil etmek.
- Program mantığının eklenmesi gereken main() fonksiyonunun çağrılması. {, main() işlevinin gövdesinin başlangıcını işaretler.
- Bir dize bildirmek ve ona ad adını vermek. Dize Guru99 değerini saklayacaktır.
- Dize adının değerini konsoldaki bir metnin yanında yazdırmak.
- Program düzgün çalışıyorsa main() işlevi bir değer döndürmelidir.
- Main() işlevinin gövdesinin sonu.
Dize İşlevleri C++
Çoğu zaman dizeleri değiştirmek isteyeceksiniz. C++ bunun için kullanabileceğiniz geniş bir fonksiyon yelpazesi sunar. Bu işlevler CString sınıfında tanımlıdır, dolayısıyla işlevleri kullanabilmek için onu kodumuza dahil etmemiz gerekir. Biraz tartışalım:
strcpy()
Bu, dize kopyalama işlevidir. Bir dizeyi başka bir dizeye kopyalar.
Sözdizimi:
strcpy(string1, string2);
Fonksiyonun iki parametresi string1 ve string2, dizelerdir. Fonksiyon string2 dizesini string1'e kopyalayacaktır.
strcat()
Bu dize birleştirme işlevidir. Dizeleri birleştirir.
Sözdizimi:
strcat(string1, string2);
İşlevin iki parametresi string1 ve string2 birleştirilecek dizelerdir. Yukarıdaki işlev, dize2 dizesini dize1 dizesinin sonuna birleştirecektir.
strlen()
Bu dize uzunluğu işlevidir. Argüman olarak kendisine iletilen dizenin uzunluğunu döndürür.
Sözdizimi:
strnlen(string1)
string1 parametresi uzunluğu belirlenecek olan stringin adıdır. Yukarıdaki işlev string1 dizesinin uzunluğunu döndürecektir.
strcmp()
Bu dize karşılaştırma işlevidir. Dizi karşılaştırması için kullanılır.
Sözdizimi:
strcmp(string1, string2);
Yukarıdaki işlev, dize0 ve dize1 benzerse 2'ı döndürür; dize0 ise 1'dan küçükse dize2.
Örnek:
Aşağıdaki örnek yukarıdaki dize fonksiyonlarının nasıl kullanılacağını göstermektedir:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char name1[10] = "Guru99";
char name2[10] = "John";
char name3[10];
int len;
strcpy(name3, name1);
cout << "strcpy( name3, name1) : " << name3 << endl;
strcat(name1, name2);
cout << "strcat( name1, name2): " << name1 << endl;
len = strlen(name1);
cout << "strlen(name1) : " << len << endl;
return 0;
}
Çıktı:
İşte kodun ekran görüntüsü:
Kod Açıklaması:
- iostream başlık dosyasını kodumuza dahil ediyoruz. Konsoldan okumamıza ve konsola yazmamıza olanak tanıyacak.
- Standart CString sınıfını kodumuza dahil etmek.
- Sınıflarını ve işlevlerini çağırmadan kullanabilmek için std ad alanını dahil etmek.
- Program mantığının eklenmesi gereken main() fonksiyonunun çağrılması. {, main() işlevinin gövdesinin başlangıcını işaretler.
- 10 karakterlik bir dize bildirmek ve ona name1 adını vermek. Dize Guru99 değerini saklayacaktır.
- 10 karakterlik bir dize bildirmek ve ona name2 adını vermek. Dize John değerini saklayacaktır.
- 10 karakterlik bir dize bildirmek ve ona name3 adını vermek.
- Bir beyan tamsayı değişkeni len'in adı.
- name1 dizesi name3 dizesine kopyalanıyor.
- name1 dizesinin değerini konsoldaki bir metnin yanında yazdırmak. Guru99'u yazdırması gerekir.
- name2 dizesini name1 dizesinin sonuna bitiştirme. name1'in değeri artık Guru99John'dur.
- name1 dizesinin değerini konsoldaki bir metnin yanında yazdırmak. Guru99John'u yazdırmalı
- name1 adlı stringin uzunluğunun belirlenmesi ve uzunluk değerinin len değişkenine atanması.
- Len değişkeninin değerinin konsoldaki başka bir metnin yanında yazdırılması.
- Program düzgün çalışıyorsa main() işlevi bir değer döndürmelidir.
- Main() işlevinin gövdesinin sonu.
ÖZET
- Bir dize, bir karakter dizisidir.
- Dizeler standart dize sınıfına aittir. C++.
- C tarzı karakter dizesini veya standart dize sınıfını kullanarak dizeleri bildirebiliriz.
- strcpy() işlevi bir dizeyi diğerine kopyalar.
- strcat() fonksiyonu iki dizeyi birleştirir.
- Strlen() fonksiyonu bir dizenin uzunluğunu döndürür.
- Strcmp() fonksiyonu iki dizeyi karşılaştırır.




