String Sınıfı

String Sınıfı

  • Birden fazla karakter içeren veri tipidir.
  • kütüphanesinde yer alır.
  • String sınıfı varsayılan yapıcı fonksiyonu kelime nesnesine boş bir dizgi atar.

Kullanımı:

string kelime;

String Tanımlama

Stringlerin aşağıda gösterilen şekilde bir çok tanımı vardır.

//kelime isimli boş bir string tanımlar
string kelime;    
 
//ilk değeri "Turkmuhendis" olan kisi isimli bir string   tanımlar
string kisi ("Turkmuhendis");   
 
//ilk değeri "Turkmuhendis" olan kisi isimli string tanımlar
string kisi="Turkmuhendis";
 
//n1 isimli string oluşturur ve n2 nesnesini n1'in içine kopyalar. n2 bir string veya karakter dizisi olabilir.
string n1 (n2);   
 
//parca isimli string tanımlar ve cumle isimli karakter dizisinin  5. karakterinden itibaren içine kopyalar
string parca (cumle,5);  
 
// dolu isimli string  tanımlar ve içine 6 adet 'X' karakteri kopyalar
string dolu (6,'X');   
 
 // paraca isimli string oluşturur,cumle isimli string nesnesinin 0. karakterinden başlayarak 5 karakter içine kopyalar
string parca (cumle,0,5);  

Stringler Atama ve Yazdırma

Aşağıdaki bir örnekle başlayalım

  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. int main ()
  5. {
  6. string bir,iki,uc;
  7. cin>>bir>>iki>>uc;
  8. cout<<bir<<endl;
  9. cout<<iki<<endl;
  10. cout<<uc<<endl;
  11. while(1);
  12. }

bir stringine Bu kelimesi, iki stringine kose kelimesi uc stringine yaz kelimesi atanmıştır.

Burada getline komutu olmadığından bir, iki, uc adlı stringleri klavyeden boşluk tuşuna basılana kadar almış, boşluk tuşuna basıldığından itibaren diğer stringe atamış üçüncü boşluktan sonra kosesi kelimesini ve diğer kelimeleri atayacak bir string bulamamış ve atamamıştır.

while(1) da bir durdurma komutudur.

Getline ve ignore Komutu

String nesnesine tüm satırı, /n’e (enter) görene kadar okur. Cin komutu ile boşluğa kadar okuyabildiğimiz için için bir cümle veya satır okumamız gerektiğinde bu fonksiyon kullanılır.

getline komutu klavyeden enter’a basana kadar girdi alır boşluk (space) tuşuna basmak bir şey değiştirmez.

getline (cin,satir,*);     // * karakteri görene kadar okur
ignore()        // satırdan geri kalan kısmı atlanır
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. int main()
  5. {
  6. string satir;
  7. getline (cin,satir);
  8. cout<<satir<<” okundu “<<endl;
  9.  
  10. string satir1;
  11. getline (cin,satir1,*);
  12. cout<<satir1<<” okundu “<<endl;
  13. return 0;
  14. }

Yukarıdaki programda satir string‘inde görüleceği gibi boşluk tuşuna basmak girdi almamızı engellememiş klavyeden enter tuşuna basılana kadar satir adlı stringe atama yapılmıştır.

Yukarıdaki programda satir1 string‘inde atama işlemi klavyede ‘*’ karakteri girilene kadar yapılmıştır.

ignore komutuna örnek verecek olursak

  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. int main()
  5. {
  6. int c;
  7. cout<<“Ekrena sayilar giriniz”<<endl;
  8. cin.ignore(4);
  9. cin>>c;
  10. cout<<c<<endl;
  11. return 0;
  12. }

cin.ignore (4)  komutu klavyeden girilen ilk dört girdiyi almamıştır.Bu karakterlerden sonrasını ekrana yazdırmıştır. cin.ignore(6) olsaydı 6 karakter alınmayacaktı.

  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. int main()
  5. {
  6. string a;
  7. char b[10];
  8. int c;
  9. cout<<“c=;
  10. cin>>c;
  11. cin.ignore(4,’/n’);
  12. cout<<“a dizini giriniz”<<endl;
  13. getline(cin,a);
  14. cout<<“b dizisini giriniz”<<endl;
  15. cin.getline(b,10);
  16. cout<<a<<endl<<b<<endl<<c<<endl;
  17. return 0;
  18. }

getline komutundan önce ignore girilmezse a ile b ayni satırda yazar. getline komutundan önce ignore kullanılmalı.

Stringlerde Birleşik Atama

Birleşik atama  operatörleri stringlerde de geçerlidir.

  • +: birleştirme operatörü ilk iki string nesnenin içeriğini birleştirir.
  • =: atama operatörü ile eşitliğin sağında bulunan değerler, eşitliğin solunda bulunan string nesnesine atanır.
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. int main()
  5. {
  6. string str, str1, str2,str3;
  7.  
  8. str=”Merhaba”;
  9. str1=”Merhaba”
  10. str2=”A”;
  11. str3=str1+str2;
  12. cout<<str3<<endl;
  13.  
  14. str+=”C++;
  15. cout<<str<<endl;
  16.  
  17. cout<<str[0]<<endl;
  18. cout<<str[1]<<endl;
  19. cout<<str[2]<<endl;
  20.  
  21. return 0;
  22. }
  23. /* Çıktı: MerhabaA*/
  24. /* Çıktı: Merhaba C++*/
  25. /* Çıktı: M
  26.   a
  27.   r */
  • +=:birleşik atama komutu ile eşitliğin sağ tarafında yer alan string nesnesi ile sol tarafında yer alan string nesnesi birleştirerek sol tarafta yer alan string nesnesine atanır.
  • [ ]: indeksli veri erişimi operatörü ile string nesnesinin, belirtilen indeksteki karakteri döndürülür.
Klavyeden Girilen Kelimeyi Ters Yazan Program
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. int main()
  5. {
  6. int uznlk ;
  7. string kelime;
  8. cout<<“Kelime Giriniz:;
  9. getline(cin,kelime);
  10. cout<<endl<<“Girdiginiz kelime:<<kelime<<endl<<endl;
  11. uznlk=kelime.length();
  12. cout<<“Girdiginiz kelimenin karakter sayisi:<<uznlk<<endl<<endl;
  13. cout<<“Girdiginiz kelimenin tersten siralanmis hali:;
  14. for(int i=uznlk-1;i>=0;i–)
  15. cout<<kelime.at(i);
  16. cout<<endl<<endl<<“Girdiginiz kelimenin tersten siralanmis ve kucuk harf hali:;
  17. for(int i=uznlk-1; i>=0; i–)
  18. {
  19. if(kelime.at(i)<‘a’)
  20. kelime.at(i)+=32;
  21. if(kelime.at(i)==’@’)
  22. kelime.at(i)-=32;
  23. cout<<kelime.at(i);
  24. }
  25. if(kelime.empty())
  26. cout<<endl<<endl<<!!Karakter Girmediniz!!;
  27.  
  28. return 0;
  29. system(“pause”);
  30. }

Kimler Neler Demiş?

  Abone ol  
Bildir