Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Жолдық ағындар






Жол ағ ыны жұ мысын istringstream, ostringstream stringstream кластары қ амтамасыз етеді, istream, ostream жә не iostream ө ндірістік класстар болып табылады. Жол ағ ымын қ олдану ү шін бағ дарламағ а ostream бастапқ ы файлын қ осу қ ажет.

Жол ағ ынын қ олдану, файл ағ ынын қ олдану аналогты айырмашылығ ы физикалық мә лімет дискідегі файлда емес, оперативтің есінде сақ талады. Одан басқ а, жол ағ ыны класы str () ә дісінен қ ұ ралады, string жол кө шірмесін қ айтаратын немесе сондай жол ағ ынының мағ ынасын иемденетіндер:

string str ()

void str (const string & s);

Жол ағ ынында кейбір C кітапханасында sscanf () жә не sprintf () аналогты функция болып табылады, сонымен қ атар естегі жолдармен жұ мыс жасайды, енгізу жә не шығ ару консолі сипатталғ ан. Мысалы: sprintf () кө мегімен естегі кейбір символдық жолдарды қ алыпқ а келтіруге болады, сосын ол экранғ а шығ ады. Бұ л қ иындық тарды ostringstream объектісімен оң ай шешуге болады.

Мысал ретінде алдық бағ дарламаның модифицирленген нұ сқ асын келтірейін, мә тін файлын экранғ а шығ аратын, мә тіндегі ә р жолды тексеретін “Line N: ”, мұ ндағ ы N—жол нө мірі:

 

// MyCopy.ccp файлынан — error () функциясын анық тау

//...

int main (int argc. char* argv [ ]) {

i f (argc! = 2) error (" Қ ате аргумент саны. ");

ifstream tfile (argv [ 1 ]);

if (! tfile) error (“ Қ ате енгізу файлы: ”. argv [ 1 ]);

int n = 0

char buf [ 1024 ];

while (! tfile. eof ()) {

n++;

tfile. getline (buf. sizeof (buf));

line < < “ Line ” < < setw (3) < < n < < “: “ < < buf < < endl;

}

return 0;

}

Кө рсетілген бойынша, ағ ындар файлғ а байланысты болу мү мкін, негізгі жадта сақ талғ ан символдарғ а емес, диск арқ ылы. Негізгі жадқ а да символдарды қ осуғ а болады. Мысалы: тез баспағ а жатпайтын хабарламаны форматтау ү шін шығ улы жолдық ағ ындармен қ олдануғ а болады.

char* p = new char[message_size];

ostrstream ost(p, message_size);

do_something(arguments, ost);

display(p);

Функция do_something стандарттық шығ ару операция бойынша ost деген функцияны ағ ынғ а жазуғ а болады, ost функциясын бағ ынушы функцияларғ а тапсыруғ а да болады. Ә лде толық тыру бақ ылауы қ ажет емес, яғ ни ost ө зінің ө лшемін біледі, жә не толық тырғ ан кезде fail () деген жағ дайғ а ауысады. Содан соң функция display «шын» шығ улы ағ ынғ а хабарлама жіберу мү мкін. Ондай ә діс кө бінесе кү рделі қ ұ рылғ ыларғ а соң ғ ы операцияларды жазғ анда ү йлеседі, яғ ни шығ улы қ ұ рылғ ылар ә деттегі жол жү йелілікке апарады. Мысалы, ost функциясы экрандағ ы бекітілген облысқ а сә йкес болу мү мкін. Тап солай, istrstream шығ улы жолдық ағ ын болады, ол нө лмен аяқ талатын символдардан окылады:

void word_per_line (char v [ ], int sz)

/*

" v" ө лшеммен" sz" бірден жолғ а жазу

*/

{

istrstream ist (v, sz);

char b2 [ MAX ];

while (ist > > b2) cout < < b2 < < " \n ";

}

Аяқ тайтын нө л файлдың соң ы болып саналады.

Жолды ағ ындар < strstream.h > файлында кө рсетіледі.

 

Бақ ылау сұ рақ тары:

1. Ағ ын дегеніміз не?

2. Ағ ынның тү рлері қ андай?

3. Ағ ын тү рлерінің бір-бірінен ерекшелігі неде?

4. Ағ ындық кластар дегеніміз не?

Ә дебиеттер:

1. Павловская Т.А. С и С++. Программирование на языке высокого уровня.

2. Р. Лафоре. Объектно-ориентированное программирование в С++.4-е издание. Питер.2004

3. Подбельский В.В., Фомин С.С. Программирование на языке Си: Учебное пособие. – М.: Финансы и статистика, 2004

4. Гради Буч. Объектно - ориентированный анализ и проектирование с примерами приложений на С++. - М.: Изд. Бином, Невский Диалект, 1998.

5. А.В. Замулин. Курс лекций: ООП (С++, Ява, C#)

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.