Stringlar

C++ da Stringlar haqida

C++ da Matn (String) ma’lumot turi

C++ da String (Matn) ma’lumot turlari biror bir matn yoki belgilarni saqlash uchun ishlatiladi va qo’shtirnoq ( “ “ ) ichida yoziladi.

The + operator can be used between strings to add them together to make a new string. This is called concatenation:

string ism = "Yodgor";

Ushbu ma’lumot turidan foydalana olishimiz uchun ham huddi <iostream> ga o’xshab <string> kutubonasini dasturimizga qo’shishimiz kerak bo’ladi.

#include <string>
 
string ism = "Yodgor";

Lekin ba’zida dastur muxarirlaridan fodalanyotganimizda kutubxonani qo’shishni unutsak ham dastur ishlayveradi. Huddi quidagi misoldagidek :

#include <iostream>
 
using namespace std;
 
int main()
{
 
   string ism = "Yodgor";
   cout << ism;
 
   return 0;
}
 
// natija : Yodgor

Dastur ishga tushirilganida uning natijasi ism o’zgaruvchisining qiymati ekranga chop qilinishi ya’ni “ Yodgor “ ismini terminalimizda ko’rishimiz bo’ladi. Qanday qilib <string> kutubxonasini dasturimizga qo’shmasdan string ma’lumot turi bilan ishlay oldik ?

Gap shundaki biz kiritgan <iostream> kutubxonasi C++ standart kutubxonalarining ba’zi komponentlari jumladan std::string <string> kutubxonasiga bog’liq hisoblanadi. Shuning uchun ham yuqoridagi ko’dimizda hechqanday xatolik kelib chiqmadi. Dasturingiz hechqanday xatolikka uchramasligi va yangi versialarda ham ishlay olishi uchun <string> kutubxonasini qo’shishni tafsiya qilamz.

Matnlarni birlashtirish (String Concatenation)

C++ da ikkita matnni bir biriga qo’shgan holda bitta umumiy matn hosil qilish uchun “ + “ opeatoridan foydalanish mumkin. C++ dasturlash tilida “ + “ operatoridan sonlarni bir biriga qo’shishda ham string ya’ni matnlarni bir biriga bog’lashda ham ishlatiladi. Sonlar (int) ma’lumot turi bilan ishlatilganda natija ham son (int) bo’ladi. Agar strin (matn) va son (int) ma’lumot turlarini bir biriga qo’shmoqchi bo’lsangiz dastur xatolikka uchraydi.

#include <iostream>
 
using namespace std;
 
int main()
{
 
   string ism = "Yodgor";
   string familiya = "Otajonov";
   string ismSharifi = ism + familiya;
   cout << ismSharifi ;
 
   return 0;
}
 
// natija: YodgorOtajonov

Natijadan ko’rib turganingizdek matnlar qo’shildi lekin o’qish uchun unchalik ham qulay usulda emas. Natijani yanada o’qishga qulay qilish uchun quidagicha soddaroq usuldan foydalansak bo’ladi.

#include <iostream>
 
using namespace std;
 
int main()
{
 
   string ism = "Yodgor ";
   string familiya = "Otajonov";
   string ismSharifi = ism + familiya;
   cout << ismSharifi ;
 
   return 0;
}
 
// natija: Yodgor Otajonov

Bunday natija o’qishga ancha qulayroq.

Matnlarni bir biri bilan bog’lash uchun “ + “ operatori yagona usul emas. Biz append() funksiyasidan ham matnlarni bog’lashda foydalanishimiz mumkin

#include <iostream>
 
using namespace std;
 
int main()
{
 
   string ism = "Yodgor ";
   string familiya = "Otajonov";
   string ismSharifi = ism.append(familiya);
   cout << ismSharifi ;
 
   return 0;
}
 
// natija: Yodgor Otajonov

length() funksiyasi

String (matn) uzunligini aniqlashda length() funksiyasidan foydalanishingiz mumkin.

#include <iostream>
 
using namespace std;
 
int main()
{
 
   string ism = "Yodgor ";
   string familiya = "Otajonov";
   string ismSharifi = ism.append(familiya);
 
   cout << ismSharifi.length() ;
 
   return 0;
}
 
//natija: 15

Matinga murojaat qilish

C++ da String (matn) ga murojat qilishning asosan ikki xil usuli mavjud. Bulardan biri index orqali murojaat qilish xisoblanadi. Dasturlash olamida indexlar doim 0 dan boshlanadi ya’ni 0 birinchi qiymat hisoblanadi.

#include <iostream>
 
using namespace std;
 
int main()
{
 
   string ism = "Yodgor ";
   string familiya = "Otajonov";
   string ismSharifi = ism.append(familiya);
 
   cout << ismSharifi[0];
 
   return 0;
}
 
// natija: Y

Yuqoridagi ko’dimizda biz ismSharifi nomli o’zgaruvchimizni 0 chi indexdagi qiymatiga murojaat qildik va natijada dastur bizga “ Y “ ya’ni ismSharifi nomli o’zgaruvchimizni qiymatidagi birinchi harfni bizga chiqarib berdi.

Huddi shunday tartibda biz index orqali murojaat qilgan holda qiymatni ham o’zgartirishimiz mumkin. Misol uchun:

#include <iostream>
 
using namespace std;
 
int main()
{
 
    string salom = "Hayirli kun";
 
    salom[0] = 'S';
 
    cout << salom;
 
   return 0;
}
 
// natija: Sayirli kun

Ko’rib turganingizdek salom nomli o’zgaruvchimizda index orqali murojaat qilib birinchi harfini o’zgartirdik.

Yana bir usuli at() funksiyasidan foydalangan holda matnga murojaat qilish hisoblanadi. Misol uchun:

#include <iostream>
 
using namespace std;
 
int main()
{
 
    string salom = "Hayirli kun";
 
    cout << salom.at(0);
 
   return 0;
}
 
//natija: H

Huddi shu ko’rinishda qiymatni o’zgartirishingiz ham mumkin:

#include <iostream>
 
using namespace std;
 
int main()
{
 
    string salom = "Hayirli kun";
 
    salom.at(0) = 'S';
 
    cout << salom;
 
   return 0;
}
 
//natija: Sayirli kun

at() funksiyasi ichiga argument sifatida index qabul qiladi va shu indexdagi qiymat bilan amal bajariladi.

Matndagi maxsus belgilar

Ba’zi matinlarda maxsus belgilardan foydalanishga to’g’ri keladi aytaylik ajrtilgan so’zlarni qo’shtirnoq ichida yozish kerak. C++ da String (matn) ma’lumot turi ham qo’shtirnoq ichida yoziladi agar biz string ichida yana bir qo’shtirnoq ochadigan bo’lsak dastur xatolikka uchraydi. Bunday holatlarni oldini olish uchun quidagicha yechim mavjud:

string text = "Biz bu yil " Italiya " ga bordik." // natija:  xato
 
string text = "Biz bu yil \" Italiya \" ga bordik"  // natija: Biz bu yil " Italiya " ga bordik

Foydalanuvchidan to’liq matn qabul qilish

Biz avval foydalangan CIN funksiyasi orqali foydalanuvchidan to’liq matn qabu qila olmaymiz ya’ni foydalanuvchi ikki yoki undan ortiq so’z kiritmoqchi bo’lsa CIN funksiyasi faqatgina bitta so’zni ekranga chop qiladi. Foydalanuvchidan to’liq matn qabul qilish uchun getline() funksiyasidan foydalanamiz.

#include <iostream>
 
using namespace std;
 
int main()
{
     string ismSharif;
     cout << "To'liq ism sharifingizni kiriting : ";
     getline(cin, ismSharif);
     cout << "To'liq ism sharifingiz : " << ismSharif;
 
   return 0;
}

getline() funksiyasi o’ziga ikkita parametr qabul qiladi bulardan biri CIN va kiruvchi qiymatni saqlash uchun o’zgaruvchi.

Ushbu sahifada

GitHubda tahrirlash