Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

C++ Ders Notları 3.Ders (String İşlemleri) Yrd. Doç. Dr. Musa Ataş 1.

Benzer bir sunumlar


... konulu sunumlar: "C++ Ders Notları 3.Ders (String İşlemleri) Yrd. Doç. Dr. Musa Ataş 1."— Sunum transkripti:

1 C++ Ders Notları 3.Ders (String İşlemleri) Yrd. Doç. Dr. Musa Ataş 1

2 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 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 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

3 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

4 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

5 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

6 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 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

7 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

8 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

9 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 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

10 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 using namespace std; int main() { string s1="siirt"; string s2="meslek"; int a=21; stringstream ss; ss<

11 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 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

12 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 using namespace std; int main() { string my_string("Merhaba Dunya"); const char* p=my_string.c_str(); cout<< p <


"C++ Ders Notları 3.Ders (String İşlemleri) Yrd. Doç. Dr. Musa Ataş 1." indir ppt

Benzer bir sunumlar


Google Reklamları