Строковые потоки
Как было показано, поток может быть привязан к файлу, т.е. массиву символов, хранящемуся не в основной памяти, а, например, на диске. Точно так же поток можно привязать к массиву символов в основной памяти. Например, можно воспользоваться выходным строковым потоком ostrstream для форматирования сообщений, не подлежащих немедленной печати:
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); // создать istream для v char b2[MAX]; // длиннее самого длинного слова while (ist>>b2) cout <<b2 << "\n"; }
Завершающий нуль считается концом файла.
Строковые потоки описаны в файле <strstream.h>.
on_load_lecture()
« |
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
вопросы | »
учебники
|
для печати и PDA
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование |