29 / 90

C++ string Class

C++ string klassi (std::string)

C++ tilida string klassi belgilar ketma-ketligini sinf ob'ekti sifatida ko'rsatish uchun ishlatiladi.

<string> sarlavhasini faylimizga kiritish orqali biz turli xil string klassi funksiyalariga kira olamiz.

example.cpp
#include <string>

String sinfi funksiyalari

string sinfida ishlatiladigan umumiy funksiyalar quyidagilardir.

Funksiya tavsifi find() Satrdagi pastki qatorni toping. rfind() Qatordagi pastki qatorning oxirgi takrorlanishini toping. append() Satrga qo'shing. insert() Satrga kiriting. erase() Satrdan belgilarni oʻchirib tashlang. replace() Satr qismlarini almashtiring. compare() Ikki qatorni solishtiring.

1-misol: Berilgan satrda pastki qatorni toping

find() funksiyasi ko'rsatilgan pastki qatorning birinchi paydo bo'lishi uchun satrni qidiradi va birinchi mos keladigan birinchi belgining o'rnini qaytaradi.

rfind() funksiyasi satrda ko'rsatilgan pastki qatorning oxirgi paydo bo'lishini qidiradi va oxirgi mos keladigan birinchi belgining o'rnini qaytaradi.

Masalan,

example.cpp
#include <iostream>
#include <string>
using namespace std;

int main() {

    string str = "Hello world, wonderful world!";
    cout << "String: " << str << endl;
    
    // birinchi hodisani toping
    size_t first_occurrence = str.find("world");
    
    // oxirgi hodisani toping
    size_t last_occurrence = str.rfind("world");
    
    if (first_occurrence != string::npos) {
        cout << "First occurrence: 'world' found at position: " << first_occurrence << endl;
        cout << "Last occurrence: 'world' found at position: " << last_occurrence << endl;
    }
    else {
        cout << "'world' not found" << endl;
    }

    return 0;
}

Chiqish

kod
String: Hello world, wonderful world!
First occurrence: 'world' found at position: 6
Last occurrence: 'world' found at position: 23

if (first_occurrence != string::npos) qatori first_occurrence o‘zgaruvchisi satr ichida world pastki qatori topilgan to‘g‘ri pozitsiyani o‘z ichiga olganligini tekshiradi.

  • Agar satrda world topilsa, first_occurrence uning birinchi paydo bo'lgan joyiga o'rnatiladi.
  • Agar world topilmasa, u maxsus doimiy qiymatga o'rnatiladi string::npos , bu pastki qator qatorda topilmaganligini ko'rsatadi.

[!NOTE] Har ikkala funksiya ham katta-kichik harflarga sezgir. Shunday qilib, agar bizning satrimiz Hello World, wonderful world! bo'lsa, find() funksiyasi pastki qatorning birinchi paydo bo'lishi sifatida 23 ni qaytaradi.

2-misol: Stringga qo'shish

append() funksiyasidan foydalanib, mavjud satrga satr qo'shishimiz mumkin. Masalan,

example.cpp
#include <iostream>
#include <string>
using namespace std;

int main() {

    string str = "Hello world,";
    cout << "Before: " << str << endl;

    // qatorni qo'shing
    str.append(" Have a good day!");

    cout << "After: " << str << endl;

    return 0;
}

Chiqish

kod
Before: Hello world,
After: Hello world, Have a good day!

3-misol: Satrni berilgan pozitsiyaga kiriting

Biz insert() funksiyasidan foydalanib, har qanday ma'lum joyga satr kiritishimiz mumkin. Masalan,

example.cpp
#include <iostream>
#include <string>
using namespace std;

int main() {

    string str = "Hello world, world!";
    cout << "Before: " << str << endl;
    
    // 13-ko'rsatkichga "chiroyli" qo'ying
    str.insert(13, " beautiful");

    cout << "After: " << str << endl;

    return 0;
}

Chiqish

kod
Before: Hello world, world!
After: Hello world,  beautifulworld!

Bu erda biz beautiful pastki qatorini satrning 13-indeksiga kiritdik. Shuni yodda tutingki, bu qo'shilgan satr oxirida bo'sh joy qo'shmaydi.

4-misol: Berilgan pozitsiyadan N belgilarni o‘chirish

example.cpp
#include <iostream>
#include <string>
using namespace std;

int main() {

    string str = "Hello world, beautiful world!";
    cout << "Before: " << str << endl;
    
    // ettinchi indeksdan boshlab beshta belgini o'chiring
    str.erase(7, 5);

    cout << "After: " << str << endl;

    return 0;
}

Chiqish

kod
Before: Hello world, beautiful world!
After: Hello w beautiful world!

Bu erda biz erase() funksiyasidan foydalangan holda ettinchi indeksdan boshlab beshta belgini olib tashladik.

5-misol: Satr ichidagi N ta belgini almashtiring

example.cpp
#include <iostream>
#include <string>
using namespace std;

int main() {

    string str = "Hello world, beautiful world!";
    cout << "Before: " << str << endl;
    
    // ikkita belgini "Yer" bilan almashtiring
    // ettinchi indeksdan boshlab
    str.replace(6, 2, "Earth");

    cout << "After: " << str << endl;

    return 0;
}

Chiqish

kod
Before: Hello world, beautiful world!
After: Hello Earthrld, beautiful world!

Bu erda biz ikkita belgini ( wo ) Earth bilan almashtirdik. replace() funksiyasidan foydalanib, istalgan uzunlikdagi satrni boshqa satrning istalgan uzunligi bilan almashtirishimiz mumkin.

6-misol: Satrlarni alifbo tartibida solishtiring

Satrlar orasidagi leksikografik munosabatlarni olish uchun biz compare() funksiyasidan foydalanamiz.

C++ string sinfidagi compare() funksiyasi taqqoslangan satrlar orasidagi leksikografik munosabatni bildiruvchi butun sonni qaytaradi. Qaytadi:

  • 0 - taqqoslangan satrlar teng bo'lsa.
  • < 0 - agar chaqiruvchi qator leksikografik jihatdan taqqoslangan qatordan kichik bo'lsa.
  • 0 - agar chaqiruvchi qator leksikografik jihatdan taqqoslangan qatordan katta bo'lsa.

Masalan,

example.cpp
#include <iostream>
#include <string>
using namespace std;

int main() {

    string str1 = "Hello world";
    string str2 = "Hello world";
    string str3 = "Hello";
    string str4 = "Hello world, What's Up?";
    
    cout << "String 1: " << str1 << endl;
    cout << "String 2: " << str2 << endl;
    cout << "String 3: " << str3 << endl;
    cout << "String 4: " << str4 << endl;
    
    // qatorlarni solishtiring
    cout <<"Comparing String 1 and String 2: "  << str1.compare(str2) << " (Equal)" <<endl;
    cout <<"Comparing String 1 and String 3: " << str1.compare(str3) << " (String 1 is Longer)" << endl;
    cout <<"Comparing String 1 and String 4: " << str1.compare(str4) <<" (String 1 is Smaller)" << endl;

    return 0;
}

Chiqish

kod
String 1: Hello world
String 2: Hello world
String 3: Hello
String 4: Hello world, What's Up? 
Comparing String 1 and String 2: 0 (Equal)
Comparing String 1 and String 3: 6 (String 1 is Longer)
Comparing String 1 and String 4: -12 (String 1 is Smaller)

Bu yerga,

-str1.compare(str2) 0 ni qaytaradi, chunki str1 va str2 tengdir. -str1.compare(str3) ijobiy raqamni qaytaradi, chunki str1 leksikografik jihatdan str3 dan kattaroqdir (u ko'proq belgilarga ega). -str1.compare(str4) manfiy sonni qaytaradi, chunki str1 leksikografik jihatdan str4 dan kichik.