Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
v_vide_shpor.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
276.8 Кб
Скачать

12. Қатарлар. Қатарларға қолданылатын функциялар

Қатар - нөл-символмен аяқталатын символдар массиві. С++-те қатармен жұмыс істеудің екі мүмкіндігі бар: С библиотекасынан (<string.h> немесе <cstring>) мұрагерлікке қалған функциялар және С++-тің string библиотекалық класы. С-дан мұрагерлікке қалған функциялар қолдану кезінде ыңғайсыз және қауіпті, себебі олар қатардың шекарадан шығып кетуін қадағаламайды.

string типті қатары ақпараттың шекарадан шығып кетуінен қорғалған және операциялар көмегімен жұмыс істеуге болады.

string класының функциялары: қатардың бөлігін қосу және меншіктеу, қатарларды түрлендіру, ішкі қатарды іздеу, қатардың бөліктерін салыстыру.

2.Қатардың бөлігін қосу және меншіктеу

Бір қатардың бөлігін екінші қатарға меншіктеу үшін assign функциясы қолданылады:

assign (const string&str);

assign (const string&str, size_type pos, size_type n);

assign (const char*s, size_type n);

Мысалы:

string s1(“telefon”), s2(“olar”);

s1.assign (s2); // нәтижесі:olar

s1.assign (s2, 1, 3); // нәтижесі: lar

Бір қатардың бөлігін екінші қатарға қосу үшін append функциясы қолданылады:

append (const string&str);

append(const string&str, size_type pos, size_type n);

append (const char*s, size_type n);

Мысалы:

string s1(“fon”), s2(“dar”);

s1.append (s2); // нәтижесі:fondar

s1.append (s2, 1, 2); // нәтижесі: fonar

Қатарларды түрлендіру

Бір қатардың бөлігін екіншісіне қою (вставка) үшін insert функциясы қолданылады:

insert (size_type pos1, const string&str);

insert (size_type pos1, const string&str, size_type pos2, size_type n);

insert (size_type pos, const char*s, size_type n);

Қатардың бөлігін жою үшін erase функциясы қолданылады:

erase (size_type pos=0, size_type n=npos);

Ол pos позициясынан бастап шақырылған қатардың n элементін жояды. Егер позиция көрсетілмесе, онда қатардың басынан бастап жояды.

Бүкіл қатарды тазалау қызметін clear функциясы атқарады:

void clear();

Қатардың бөлігін ауыстыру (замена) үшін replace функциясы қолданылады:

replace (size_type pos1, size_type n1, const string&str);

replace (size_type pos1, size_type n1, const string&str, size_type pos2, size_type n2);

replace (size_type pos1, size_type n1, const char*s, size_type n2);

Екі қатарды бір-бірімен алмастыру үшін swap функциясы қолданылады:

swap (string&s);

Қатардың бөлігін бөліп алу (выделения) үшін substr функциясы қолданылады:

string substr (size_type pos=0, size_type n=npos) const;

string типті объектілерді ескі стильдегі қатарға түрлендіру үшін c_str функциясы қолданылады:

const char*c_str() const;

Жоғарыдағы функцияларды қолдануға арналған мысал:

#include <string>

#include <iostream>

using namespace std;

int main () {

string s1(“uzdik okushy”), s2(“torlar”), s3(“shyt”);

cout<<“s1: ”<<s1<<endl;

cout<<“s2: ”<<s2<<endl;

cout<<“s3: ”<<s3<<endl;

// insert функциясын қолдану:

cout<<“insert-ten kein: ”<<endl;

cout<<“s1: ”<<s1.insert(8, s3, 2, 2)<< endl;

//erase функциясын қолдану:

s1.erase(0,2;

s1.erase(1,3);

cout<<“erase-den kein: ”<<endl;

cout<<“s1: ”<<s1.erase(2,5)<< endl;

// append функциясын қолдану:

cout<<“append-ten kein: ”<<endl;

cout<<“s1: ”<<s1.append(s2)<< endl;

}

Нәтижесі:

insert-ten kein: uzdik okytushy

erase-den kein: dok

append-ten kein: doktorlar

Қатардың құрамын іздеу

Қатардың құрамын (подстрока) іздеу үшін бірнеше функциялар қарастырылған. Төменде негізгілері келтірілген:

size_type find(const string&str, size_type pos=0) const;

Шақырылған қатардан pos позициясынан бастап str қатарының сол жақтан енуін іздейді және егер қатар табылмаса, онда қатардың позициясын немесе npos-ны қайтарады.

size_type find(char c, size_type pos=0) const;

Шақырылған қатардан pos позициясынан бастап с символының сол жақтан енуін іздейді және егер қатар табылмаса, онда қатардың позициясын немесе npos-ны қайтарады.

size_type rfind(const string&str, size_type pos=npos) const;

Шақырылған қатардан pos позициясына дейін str қатарының оң жақтан енуін іздейді және егер қатар табылмаса, онда қатардың позициясын немесе npos-ны қайтарады.

size_type rfind(char c, size_type pos=npos) const;

Шақырылған қатардан pos позициясына дейін с символының оң жақтан енуін іздейді және егер қатар табылмаса, онда қатардың позициясын немесе npos-ны қайтарады.

size_type find_first_of(const string&str, size_type pos=0) const;

Шақырылған қатардан pos позициясынан бастап str қатарының кез-келген символының сол жақтан енуін іздейді және егер ену табылмаса, онда символдың позициясын немесе npos-ны қайтарады.

size_type find_first_of(char c, size_type pos=0) const;

Шақырылған қатардан pos позициясынан бастап с символының сол жақтан енуін іздейді және егер ену табылмаса, онда символдың позициясын немесе npos-ны қайтарады.

size_type find_last_of(const string&str, size_type pos=npos) const;

Шақырылған қатардан pos позициясынан бастап str қатарының кез-келген символының оң жақтан енуін іздейді және егер ену табылмаса, онда символдың позициясын немесе npos-ны қайтарады.

size_type find_last_of(char c, size_type pos=npos) const;

Шақырылған қатардан pos позициясынан бастап с символының оң жақтан енуін іздейді және егер ену табылмаса, онда символдың позициясын немесе npos-ны қайтарады

size_type find_first_of(const string&str, size_type pos=0) const;

pos позициясынан бастап шақырылған қатардың символымен str қатарының бірде-бір символы сәйкес келмейтін сол жақ позициясын іздейді.

size_type find_first_of(char c, size_type pos=0) const;

pos позициясынан бастап шақырылған қатардың символымен c символының сәйкес келмейтін сол жақ позициясын іздейді.

size_type find_last_of(const string&str, size_type pos=npos) const;

pos позициясынан дейін шақырылған қатардың символымен str қатарының бірде-бір символы сәйкес келмейтін оң жақ позициясын іздейді.

size_type find_last_of(char c, size_type pos=npos) const;

pos позициясына дейін шақырылған қатардың символымен c символының сәйкес келмейтін оң жақ позициясын іздейді.

size_type find_last_of(const string&str, size_type pos=npos) const;

Жоғарыдағы функцияларды қолдануға арналған мысал:

#include <string>

#include <iostream>

using namespace std;

int main () {

string s1(“kurstagy okushy”), s2(“ku”);

cout<<“s1: ”<<s1<<endl;

cout<<“s2: ”<<s2<<endl;

int i=s1.find(s2);

int j=s1.rfind(s2);

cout<<“s1-degi birinshi s2: ”<<i<<endl;

cout<<“s1-degi songy s2: ”<<j<<endl;

cout<<“s1-degi birinshi ‘y’:” <<s1.find(‘y’)<<endl;

cout<<“s1-degi songy ‘y’: ”<<s1.rfind(‘y’)<<endl;

cout<<“s1-degi birinshi :” <<s1.find_first_of(‘stuv’)<<endl;

cout<<“s1-degi songy : ”<<s1.rfind_last_of(‘stuv’)<<endl;

}

Нәтижесі:

s1-degi birinshi s2: 0

s1-degi songy s2: 9

s1-degi birinshi ‘y’:” 7

s1-degi songy ‘y’: 14

s1-degi birinshi: 3

s1-degi songy: 12

5.Қатардың бөліктерін салыстыру

Қатардың бөліктерін салыстыру үшін compare функциясы қолданылады.

int compare (const string&str) const;

int compare(size_type pos1, size_type n1, const string&str) const;

int compare(size_type pos1, size_type n1, const string&str, size_type pos2, size_type n2 ) const;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]