C++ Ders Notları
3.Ders (String İşlemleri)
Yrd. Doç. Dr. Musa Ataş
1
String sınıfı ve ilgili metodları
C++ da karakterlerden oluşan dizeleri string türünden deklare edebiliriz. Bu türdeki
değişkenlere iki tırnak içerisinde her türlü karakter girişi yapabiliriz.
string sınıfını (türünü) kullanabilmemiz için en başa #include<iostrem> yazıp using
namespace std; satırını eklememiz gerekmektedir. Aksi takdirde derleyicimiz hata
mesajı üretecektir.
using namespace std; satırı yazılmadığı zaman, komutların başına std:: öneki yazma
zorunluluğu bulunmaktadır.



#include <iostream>
using namespace std;
int main()
{
string message=“Merhaba Dunya!”;
cout << “your message:" << message << endl;
return 0;
}
Not: C++ dili C dilinde stringleri tanımlamak için kullanılan char* (char pointer)
türünde yapıyı da desteklemektedir. Ancak pointerlarda yapılabilecek olası hatalar ve
pointerları öğrenme zorluğu yüzünden bu konu işlenmemektedir.

2
String sınıfı ve ilgili metodları
string bir değişken tanımlandığında constructor (yapıcı)
metoduna ilk değer parametre girilerek te yapılabilir. Örn:

using namespace std;
string str(“Merhaba”);
string sınıfından tanımlanmış bir değişkene cin ile
kullanıcıdan değer alınabilir. Bunun için iki yol vardır.
Birincisi eğer alınacak değer tek kelime ise doğrudan
cin>>str_degisken denilebilir. Bu durumda aralarında
boşluk olan kelimelerden sadece ilki alınacaktır. İkincisi:
aralarında boşluk olan kelimelerin tümü alınacaksa o
zaman getline metodu kullanılır. Örn:

getline(cin, str_degisken);
3
Stringlerin eklenmesi
stringler birbirlerine “+” operatörü ile eklenebilirler.
Mesela:

using namespace std;
string str1(“Merhaba”);
string str2=“ Dunya”);
string str3=str1+str2;
+= opearatörü de stringleri ekleme için kullanılabilir. +
veya += operatörü string ile char* türündeki stringi de
ekleyebilecek şekilde tasarlanmışlardır.

4
Stringlerin karşılaştırılması
stringler birbirleri ile “==” operatörü ile kıyaslanabilmektedirler. Mesela:

using namespace std;
string str1(“Merhaba”);
string str2=“ Dunya”);
bool b=(str1==str2);
cout << “comparing two string:” << b << endl;
“==“ operatörü genellikle if koşul yapılarında veya koşul içeren diğer
yapılarda (for, while gibi) kullanılmaktadır.
Örn:


const string sifre=“hmyo”;
string str=“”;
cout << “enter your password:” ;
cin >> str;
if (str==sifre){
cout << “basarili” << endl;
}else{
cout << “ sifre hatali” << endl;
}
5
String uzunluğu ve karakterlere erişim
string bir değişkenin uzunluğu length() veya size() metodu ile alınabilir. Mesela:

using namespace std;
string str=“Merhaba Dunya”;
cout << “length of the specified string:” << str.length() << endl;
cout << “length of the specified string:” << str.size() << endl;
Yukarıdaki örnekte “Merhaba Dunya” cümlesi aslında C++ da bir karakter dizisi
olarak algılanmaktadır. C/C++/Java/C# ve diğer birçok dilde diziler 0. indis ten
başlarlar. Bu mantığa göre M harfi str stringinin aslında 0. elemanıdır.
Örn:


#include <iostream>
using namespace std;
int main()
{
string sifre="hmyo";
cout << "0.index:" << sifre[0] << endl;
cout << "1.index:" << sifre[1] << endl;
cout << "2.index:" << sifre[2] << endl;
cout << "3.index:" << sifre[3] << endl;
}
6
Stringlerde arama (find metodu)
string bir değişkenin içinde bir başka stringin veya karakterin geçip
geçmediğini yine string sınıfında tanımlanmış find metodu ile buluyoruz. find
metodu parametre olarak aranacak kelime ile aramanın hangi indisten
itibaren yapılacağı bilgisini alıp aranan kelimenin ilk geçtiği yerin indis yani
pozisyon bilgisini geri dönderir.
Mesela aşağıdaki örnekte bir stringin içerisine serpiştirilmiş 4 ayrı and
kelimesinin string içerisindeki yerleri find metodu ile bulunmaya çalışılmıştır.
Dikkat edilirse find metodu her and kelimesinin yerini bulduğunda bir
sonraki arama bu noktanın bir ilerisinden başlatılmaktadır.


string sifre="hmyoanddlfklsdfksandsşdlfkşlsdfksandşsldfkldfkand";
cout << "orjinal string:" << sifre << endl;
int p1=sifre.find("and",0);
cout << "1.yer:" << p1 << endl;
int p2=sifre.find("and",p1+1);
cout << "2.yer:" << p2 << endl;
int p3=sifre.find("and",p2+1);
cout << "3.yer:" << p3 << endl;
int p4=sifre.find("and",p3+1);
cout << "4.yer:" << p4 << endl;
7
Stringlerde alt küme (substring)
string bir değişkenin içinde istediğimiz pozisyondan
itibaren istenilen uzunlukta karakter alma işlemini
substring işlemi denilir. Bunun için C++ dilinde string
sınıfında tanımlanmış substr metodu kullanılmaktadır. Örn:

string sifre="hmyoanddl fklsdfksand sşdlfkş lsdfksandşsld fkldfkand";
string alt_string=sifre.substr(12,7);
cout << "alt string:" << alt_string << endl;
8
Stringten silme
string bir değişkenin içinde istediğimiz pozisyondaki bir stringi
silebilmek için erase metodunu kullanıyoruz. erase metodu
parametre olarak silmeye başlanacak başlangıç pozisyon numarası ile
kaç adet karakterin silineceği (uzunluk) bilgisini alır. Mesela; “Siirt
Meslek Yüksek Okulu” stringindeki Meslek kelimesini silebilmek için
aşağıdaki kodu yazabiliriz.

#include <iostream>
using namespace std;
int main()
{
string str="Siirt Meslek Yuksek Okulu";
cout << "orjinal string:" << str << endl;
string geriye_kalan=str.erase(6,6);
cout << "geriye kalan:" << geriye_kalan << endl;
}
9
Stringleri artarda ekleme

Birden fazla string değişken artarda eklenebilir. Bunun için sstream kütüphanesinin
include ile programınıza dahil edilmesi gerekmektedir. String dışındaki diğer türler
de stream değişkenine eklenebilir bu durumda tüm değişkenler stringe dönderilir.
(type casting)
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string s1="siirt";
string s2="meslek";
int a=21;
stringstream ss;
ss<<s1<<" "<<s2<<":"<<a<<" yuksek okulu";
string s3=ss.str();
cout<<s3<<endl;
return 0;
}
10
Stringte istenilen bir indexten sonra
ekleme işlemi

string bir değişkenin içinde istediğimiz pozisyondan itibaren istenilen
bir string eklenti yapılabilir. Bunun için insert() metodu kullanılır.
insert() metodu parametre olarak eklemeye başlanacak başlangıç
pozisyon numarası ile eklenecek string ekini alır. Mesela; “Siirt Meslek
Yüksek Okulu” stringinde ki Meslek kelimesinin arkasına Bilgisayar
kelimesini ekleyebilmek için aşağıdaki kodu yazabiliriz.
#include <iostream>
using namespace std;
int main()
{
string str="Siirt Meslek Yuksek Okulu";
cout << "orjinal string:" << str << endl;
string eklenen=str.insert(12," Bilgisayar");
cout << "eklenmis str:" << eklenen << endl;
}
11
String sınıfının diğer metodları


string sınıfında bunların dışında daha birçok kullanılabilecek
metod bulunmaktadır. Bunları öğrenemek için google dan
detaylı araştırma yapabilirsiniz.
C kütüphaneleri ve geriye uyumluluk açısından string sınıfında
tanımlanmış c_str() fonksiyonu, const char* tipinde string
üretmeye çalışır. Örn:
#include <iostream>
using namespace std;
12
int main()
{
string my_string("Merhaba Dunya");
const char* p=my_string.c_str();
cout<< p <<endl;
}
Download

3.Stringler ve String islemleri