Скачиваний:
0
Добавлен:
20.09.2026
Размер:
261 Кб
Скачать
☆
11-lekciya. Qatarlar hám keńeytilgen belgiler String tipindegi qatarlar
haqqında ulıwma túsinik. Qatar standart funkciyaları hám olar
járdeminde qatarlardı qayta islew.
Joba:
1. Kirisiw: C stilindegi qatarlardan std::string klasına ótiw
2. std::string klası: Ulıwma túsinik hám qolaylıqları
3. std::string menen tiykarǵı ámeller
5. Qatarlardı basqa tiplerge hám kerisinshe túrlendiriw
1. Kirisiw: C stilindegi qatarlardan std::string klasına ótiw
Aldınǵı lekciyada biz C stilindegi qatarlar (char massivleri) menen tanıstıq. Olar C tilinen miyras bolıp qalǵan hám yad penen tikkeley islew imkaniyatın berse de, olardıń bir qatar kemshilikleri bar edi:
Yadtı qolda basqarıw: Massiv kólemin aldınnan anıqlaw hám onıń shegarasınan
shıǵıp ketpewdi qadaǵalaw kerek.
Qáwipsizlik máselesi: strcpy hám strcat sıyaqlı funkciyalar buferdiń tolıp
ketiwine (buffer overflow) alıp keliwi múmkin.
Qolaysızlıq: Ápiwayı ámeller ushın arnawlı funkciyalardı shaqırıw kerek edi.
Usı mashqalalardı sheshiw ushın C++ standart kitapxanası zamanagóy, qolaylı hám qáwipsiz qurallardı usınadı. Tekstli maǵlıwmatlar menen islew ushın bul qural
std::string klası bolıp tabıladı.
2. std::string klası: Ulıwma túsinik hám qolaylıqları
std::string – bul C++ standart kitapxanasınıń <string> baslı faylında (header
file) anıqlanǵan klass. Ol qatarlar menen islewdi ádewir jeńillestiredi.
Tiykarǵı qolaylıqları:
Avtomatlastırılǵan yad basqarıwı: std::string obyektiniń kólemi kerek
bolǵanda avtomat túrde ózgeredi. Siz onıń sıyımlılıǵı haqqında qayǵırmawıńızǵa boladı.
Qáwipsizlik: string klasınıń metodları yad shegaraların óz ishinde qadaǵalaydı,
bul buferdiń tolıp ketiwi sıyaqlı qátelerdiń aldın aladı.
Funkcionallıq: Qatarlardı qayta islew ushın kóp sanlı qolaylı metodlarǵa
(funkciyalarǵa) iye.
Operatorlardı qollap-quwatlaw: + (qosıw), = (menshiklew), == (salıstırıw)
sıyaqlı operatorlardı tikkeley qollanıw múmkin.
Járiyalaw hám inicializaciyalaw usılları
std::string obyektin jaratıw ushın dáslep <string> kitapxanasın qosıw kerek.
#include <iostream> #include <string> // Zárúrli baslı fayl
int main() {
// 1. Bos qatar jaratıw std::string s1;
// 2. Tırnaqsha ishindegi tekst penen inicializaciyalaw std::string s2 = "Sálem, Álem!";
// 3. Basqa string obyektinen nusqa alıw (copy initialization) std::string s3 = s2;
// 4. Belgili bir belgini tákirarlaw arqalı std::string s4(10, '-'); // 10 dana '-' belgisi
// 5. C stilindegi qatardıń bir bólegi menen char c_str[] = "Programmalastırıw"; std::string s5(c_str, 9); // "Programma" sózin aladı
std::cout << "s2: " << s2 << std::endl; // Sálem, Dúnya! std::cout << "s3: " << s3 << std::endl; // Sálem, Dúnya! std::cout << "s4: " << s4 << std::endl; // ---------- std::cout << "s5: " << s5 << std::endl; // Programma
return 0; }
3. std::string menen tiykarǵı ámeller
Kirgiziw hám shıǵarıw (cin, cout, getline)
cout hám cin ádettegidey isley beredi, biraq cin ele birinshi probelge shekem
oqıydı. Probel menen tolıq qatardı oqıw ushın getline() funkciyasınan paydalanamız.
#include <iostream> #include <string>
int main() {
std::string name; std::cout << "Atıńızdı kirgiziń: "; // std::getline(kirgiziw aǵımı, saqlanatuǵın string ózgeriwshisi); std::getline(std::cin, name); std::cout << "Xosh kelipsiz, " << name << "!" << std::endl; return 0; }
Menshiklew (=), Birlestiriw (+, +=) hám Salıstırıw (==, !=, <, >)
Bul operatorlar std::string klası ushın qayta júklengen (overloaded), sonlıqtan olardı intuitiv túrde qollanıw múmkin.
#include <iostream> #include <string>
int main() {
std::string str1 = "C++"; std::string str2 = " tili"; std::string str3;
// Menshiklew str3 = str1; std::cout << "str3: " << str3 << std::endl; // str3: C++
// Birlestiriw str3 = str1 + str2; std::cout << "str1 + str2: " << str3 << std::endl; // str1 + str2:
C++ tili
// Qosıp menshiklew str1 += " ańsat!"; std::cout << "str1: " << str1 << std::endl; // str1: C++ ańsat!
// Salıstırıw std::string pass1 = "secret"; std::string pass2 = "secret123"; if (pass1 == "secret") { std::cout << "Parollar sáykes keldi." << std::endl; } if (pass1 < pass2) { std::cout << "pass1 alfavit boyınsha pass2 den aldın keledi." << std::endl; } return 0; }
Elementlerge (belgilerge) baylanısıw ([] hám .at())
Qatardıń ayırım belgilerine baylanısıw ushın [] operatorınan yamasa .at() metodınan paydalanıw múmkin.
[] operatorı: Tez isleydi, biraq indeks shegaradan shıǵıp ketse, teksermeydi. .at() metodı: Indeksti tekseredi. Eger indeks shegaradan shıǵıp ketse, programma
out_of_range qátesin berip toqtaydı. Bul qáwipsizirek usıl esaplanadı.
#include <iostream> #include <string>
int main() {
std::string text = "ABCDE"; std::cout << text[1] << std::endl; // 'B' belgisin shıǵaradı std::cout << text.at(2) << std::endl; // 'C' belgisin shıǵaradı
// Qátege mısal (kommentariyden shıǵarıp iske túsiriń) // std::cout << text.at(10) << std::endl; // programma qáte menen
toqtaydı
return 0; }
4. std::string klasınıń tiykarǵı metodları (funkciyaları)
std::string klası qatarlar ústinde túrli ámellerdi orınlaw ushın kóp sanlı
metodlarǵa iye.
Kólem hám sıyımlılıq penen islew
length() / size(): Qatar uzınlıǵın (belgiler sanın) qaytaradı. Eki metod ta birdey
wazıypanı atqaradı.
empty(): Eger qatar bos bolsa true, keri jaǵdayda false qaytaradı. clear(): Qatardıń barlıq mazmunın óshirip, onı bos qatarǵa aylandıradı.
std::string msg = "Sálem"; std::cout << "Uzınlıǵı: " << msg.length() << std::endl; // 5
msg.clear();
if (msg.empty()) {
std::cout << "Qatar endi bos." << std::endl; }
Qatardı ózgertiw
append() / +=: Qatardıń aqırına basqa qatardı yamasa belgilerdi qosadı. push_back(): Qatardıń aqırına tek ǵana bir belgini qosadı. insert(pos, str): str qatarın pos poziciyasınan baslap qosadı. erase(pos, len): pos poziciyasınan baslap len sanındaǵı belgini óshiredi. replace(pos, len, str): pos poziciyasınan baslap len uzınlıqtaǵı bólegin str
qatarına almastıradı.
std::string s = "Men C úyrenemen.";
s.insert(6, "++ "); // "Men C++ úyrenemen." s.replace(6, 3, "Java"); // "Men Java úyrenemen." s.erase(4, 5); // "Men úyrenemen." s.push_back('!'); // "Men úyrenemen.!"
Izlew ámelleri
find(str, pos=0): str qatar-astın pos poziciyasınan baslap izleydi hám onıń
birinshi ushırasqan indeksin qaytaradı. Eger tabılmasa, std::string::npos dep atalǵan arnawlı konstantanı qaytaradı.
rfind(str): find sıyaqlı, biraq izlewdi qatardıń aqırınan baslaydı. find_first_of(str): str ishinde berilgen belgilerdiń qaysı biri birinshi ushırasa,
sonıń indeksin qaytaradı.
std::string text = "programma dúziw - bul qızıqlı programma";
size_t pos = text.find("programma");
if (pos != std::string::npos) {
std::cout << "'programma' sózi " << pos << "-indekste tabıldı." <<
std::endl; // 0
}
pos = text.rfind("programma");
std::cout << "'programma' sózi aqırdan " << pos << "-indekste
tabıldı." << std::endl; // 33
pos = text.find_first_of("dqb"); // 'd', 'q', 'b' belgilerinen
birinshisin izleydi
std::cout << "Birinshi ushırasqan belgi indeksi: " << pos << std::endl; // 10 ('d')
Qatar-astı (substring) alıw
substr(pos, len): pos poziciyasınan baslap len uzınlıqtaǵı qatar-astın jańa
std::string obyekti sıpatında qaytaradı.
std::string email = "paydalaniwshi@gmail.com";
size_t at_pos = email.find('@');
std::string username = email.substr(0, at_pos); // 0-poziciyadan '@'
ke shekem
std::cout << "Paydalanıwshı atı: " << username << std::endl; //
"paydalaniwshi"
5. Qatarlardı basqa tiplerge hám kerisinshe túrlendiriw
Zamanagóy C++ (C++11 standartınan baslap) qatarlar hám sanlar arasındaǵı túrlendiriwdi ádewir ańsatlastırdı.
to_string(number): Hár qıylı sanlı tiplerdi (int, double, float hám t.b.)
std::string ke aylandıradı.
stoi(str): Qatardı (string) pútin sanǵa (int) aylandıradı. stod(str): Qatardı (string) haqıyqıy sanǵa (double) aylandıradı.
#include <iostream> #include <string>
int main() {
// Sannan qatarǵa int jasi = 25; double baha = 199.99; std::string s_jasi = "Jası: " + std::to_string(jasi); std::string s_baha = "Bahası: " + std::to_string(baha);
std::cout << s_jasi << std::endl; std::cout << s_baha << std::endl;
// Qatardan sanǵa std::string str_san = "12345";
int san = std::stoi(str_san); std::cout << "San: " << san * 2 << std::endl; // Natiyje: 24690
return 0; }
std::string klası C++ tilinde tekstli maǵlıwmatlar menen islewdiń standart hám
eń natiyjeli usılı bolıp tabıladı. Ol C stilindegi qatarlarǵa salıstırǵanda qáwipsizlik, qolaylılıq hám funkcional imkaniyatlar jaǵınan úlken qolaylıqlarǵa iye. Yadtı avtomat túrde basqarıwı, operatorlardıń qayta júkleniwi hám islew ushın tayın metodlardıń keń kompleksi onı zamanagóy C++ programmalastırıwınıń ajıralmas bólegine aylandıradı. Keyingi ámeliyat hám proektlerde tekst penen islesiw zárúrligi tuwılǵanda std::string klasınan paydalanıw usınıs etiledi.
Соседние файлы в папке 1-semestr