Ob’yektlar klaslar orqali aniqlanadi. string sinfi header fayli yordamida aniqlanadi. Bundan tashqari ob’yekt sinfning nusxasi ham deb ataladi.
String ob’yektlari uchun sodda funksiyalar
Funksiya
Tavsifi
length()
Satrdagi belgilar sonini qaytaradi
size()
length() funksiyasi bil bir xil
at(index)
Ko’rsatilgan o’rindagi belgini qaytaradi.
Misol
string message = "ABCD";
cout << message.length() << endl;
cout << message.at(0) << endl;
string s = "Bottom";
cout << s.length() << endl;
cout << s.at(1) << endl;
Bu yerda message.length() 4 qiymat qaytaradi, message.at(0) esa A belgisini qaytaradi.
s.length() 6 qiymat qaytaradi, s.at(1) o belgisini qaytaradi.
Eslatma!
Dastlabki holda satr bo’sh bo’ladi. Hech qanday belgi bo’lmaydi. “” bo’sh satrni anglatadi. Shuning uchun quyidagi ikkita satr bir xil:
string s;
string s=“”;
Dasturda string turidan foydalanmoqchi bo’lsangiz, Siz avvalo header faylini qo’shishingiz kerak.
Satr indeksi va ajratish (subscript) operatori
s.at(index) funksiyasi s satrda 0 dan s.length()-1 oraliqdagi indeksda joylashgan belgini qaytarishini anglatadi. Misol uchun, message.at(0) funksiyasi C belgisini chiqaradi. Satrlarda birinchi belgi har doim 0- indeksadan boshlanadi.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
C
+
+
g
a
x
u
s
h
k
e
l
i
b
s
i
z
!
indekslar
message
message.at(0)
message.length() – 21 ga teng
message.at(20)
Ajratish operatori [ ]
Satrdan biror belgini ajratib olish uchun satr ob’yekti yoniga [ ] qavslarini qo’yib, qavslar ichiga indeks yozilsa, shu indeksdagi belgini boshqa satrga ta’minlash mumkin.
string s = "ABCD";
s[0] = 'P';
cout << s[0] << endl;
Bu dasturda “ABCD” satrining datlabki belgizisning o’rniga “P” belgisi qo’yilmoqda.
E’tibor bering!
s satrida alohida elementga murojaat qilishda indeks chegarasidan chiqib ketish umumiy dasturlash xatoligini(common programming error) keltitib chiqaradi. Bunday xatolikdan qochish uchun s.length() – 1 chegaradan chiqlmayotganiga ishonch hosil qilish lozim. Misol uchun funksiyalarni s.at(s.length()) yoki s[s.length()] kabi qo’llash xatolik keltirib chiqaradi.
Satrlarni qo’shish (Konkatenatsiyalash)
C++ da + operatori orqali satrlarni qo’shish mumkin. Quyida s1 va s2 satrlarini qo’shib, s3 satrga ta’minlash ko’rsatilgan:
string s3 = s1 + s2;
+= operatorini satlar uchun ham qo’llash mumkin. Misol uchun quyidagi kodda xabar satridagi “C++ ga xush keilbsiz. ” jumlasiga “Dasturlash judayam qiziq.” jumlasini qo’shish ko’rsatilgan:
xabar+= “Dasturlash judayam qiziq.”;
Endi xabar satrida “C++ ga xush kelibsiz. Dasturlash judayam qiziq.” jumlasi paydo bo’ldi.
Satrlarni qo’shish (Konkatenatsiyalash)
Satrga char turidagi belgini qo’shish mumkin.
string s = "ABC";
s += 'D';
Endi s satrda “ABCD” paydo bo’ldi.
Muhim!
string cites = "London" + "Paris"; //noto’g’ri
string s = "New York";
string cites = s + "London" + "Paris"; //to’gri
Satrlarni taqqoslash
Satrlarni taqqoslash uchun ==, !=, <, <=, >, >= amallari ishlatiladi.
Satrlarni o’qitishda cin ob’yektidan foydalanish mumkin.
1 string city;
2 cout << “Shaharni kiriting: ";
3 cin >> city; // satrni o’qib olish
cout << “Siz " << city << “ ni kiritidingiz.”<
Agar shu yerda New York kiritilishi talab etilsa, getline funksiyasidan foydalaniladi. Bu funksiya header fayli funksiyalaridan biri hisoblanadi.
getline(cin, s, ajratuvchiBelgi)
Satrlarni o’qish
Ajratuvchi belgi kiritilganda funksiya belgilarni o’qishni to’xtatadi. Ajratkich o’qiladi, ammo satga qo’shilmaydi. Funksiyaning 3-parametri bo’lmish ajratuvchiBelgi dastlabki holda (‘\n’) bo’ladi.
1 string city;
2 cout << “Shaharni kiriting: ";
3 getline(cin, city, ‘\n’); // getline(cin, city) bilan bir xil
Konsolga matnni formatlangan holda chiqarish uchun oqim manipulyatorlaridan foydalaniladi.
Dasturda ko’pincha matnni formatlangan holda chiqarish talab etiladi. Misol uchun, quyidagi dastur kodida bankka qo’yilgan omonatning foizi va yillik foizini hisoblaydi:
double omonat = 12618.98;
double foiz = 0.0013;
double summa = omonat * foiz;
cout << “Summa: " << summa << endl;
Tez tez qo’llaniladigan oqim manipulyatorlari
Operator
Tavsifi
setprecision(n)
Haqiqiy sonlar uchun aniqlikni o’rnatadi
fixed
Haqiqiy sonlarni tahrirlangan ko’rinishda chiqarish
showpoint
Sonlarni o’nli kasr ko’rinishida tasvirlash. Haqiqiy bo’lmagan sonlarni kasr ko’rinishida tasvirlaydi.
3 aniqlik faqat birinchi qiymat uchun o’rnatilgan edi, ammo boshqa o’zgaruvchilar uchun ham ishladi, chunki aniqlik o’zgartirilmadi.
setprecision(n) manipulyatori
Agar kenglik butun son uchun etarli bo'lmasa, setprecision manipulyatori ta’sir qilmaydi.
cout << setprecision(3) << 23456 << endl;
Natija
23456
fixed manipulyatori
Ba’zan kompyuter katta haqiqiy sonlarni ilmiy ko’rinishda ko’rsatadi. Misol uchun,
cout << 232123434.357;
buyrug’i quyidagi natijani beradi:
2.32123e+08
Bu holatda fixed manipulyatoridan foydalaniladi.
cout << fixed << 232123434.357;
Natijasi
232123434.357000
fixed manipulyatori
Dastlabki holda, verguldan keying raqamlar soni 6 tani tashkil etadi. Uni fixed manipulyatori ichida setprecision manipulyatorini qo’llash orqali o’zgartirish mumkin. fixed manipulyatori ishlatilayotganda setprecision manipulyatori ham qo’llanilsa, nuqtadan keyin raqamlar nechta bo’lishini anglatadi. Misol:
double oylikTulov = 345.4567;
double umumiyTulov = 78676.887234;
cout << fixed << setprecision(2)
<< oylikTulov << endl
<< umumiyTulov << endl;
Natijasi
345.46
78676.89
showpoint manipulyatori
fixed manipulyatoriga o’xshab ketadi, showpoint manipulyatori bilan birgalikda setprecision manipulyatorini ham qo’llash mumkin: