Строковые потоки ввода-вывода (буферизованный ввод-вывод).


Строковые потоки (или потоки буферизированного ввода-вывода (arrat-base I/O)) используют в качестве физического устройства ввода-вывода буфер памяти (символьный массив).

Особенности:

· <strstream> - старая библиотека системы буферизованного ввода-вывода, которая содержит описания классов для работы с массивом символов типа char (классы istrstream, ostrstream, strstream и strstreambuf (низкоуровневое управление строковым потоком)).

· <sstream> - новая библиотека системы буферизованного ввода-вывода на основе шаблонных классов.

В новой библиотеке <sstream> создаются две специализации шаблонных классов:

· char – для поддержки 8-битовых(байтовых) строковых потоков (классы istringstream, ostringstream, stringstream).

· wchar_t – для поддержки строковых потоков расширенных символов (классы wistringstream, wostringstream, wstringstream)

Низкоуровневые средства управления строковым потоком доступны в классе stringbuf(wstringbuf).

Создание строковых потоков:

istrstream::istrstream(const char *byf);

istrstream::istrstream(const char *byf, streamsize size);

istrstream::istrstream(const char *byf, streamsize size, openmode mode = ios::out);

ostrstream::ostrstream();

ostrstream::ostrstream(const char *byf, streamsize size, openmode mode = ios::out|ios::in);

strstream::strstream();

Особенности:

· byf– указатель на массив, который используется доя выполнения операции ввода-вывода (при операциях ввода массив должен заканчиваться нулевым символом);

· size– размер символьного массива (при указании размера буфера строка в нём может не завершаться нулевым байтом).

· mode– способ открытия (значения можно комбинировать с помощью логического «или», обычно используют по умолчанию).

· При использовании конструктора по умолчанию поток будет связан с динамическим массивом (растёт автоматически)

Методы строковых потоков:

· Определение количества символов, записанных в символьный массив (возрастает количество записанных символов с учётом нулевого байта). streamsize pcount();

· «заморозка» (блокировка для вывода) динамического массива и открытие доступа к его элементам (возвращает указатель на буфер символов). char *str();

· Управление доступом к динамическому массиву (true – «заморозка», false –«разморозка» массива).

void freeze (bool action = true);

 

int main()

{

char *s = "\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20";

istrstream si(s);

char ch;

si.get(ch);

while(!si.eof())

{

cout << hex << showbase << (int) ch << " ";

si.get(ch);

}

return 0;

}




Дата добавления: 2022-02-05; просмотров: 210;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.