Дістемелік кешен



бет38/112
Дата22.12.2021
өлшемі0,85 Mb.
#127596
түріПрограмма
1   ...   34   35   36   37   38   39   40   41   ...   112
Байланысты:
ооп лекция

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

Жол ағыны жұмысын 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   ...   34   35   36   37   38   39   40   41   ...   112




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет