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

Istrstream::istrstream( const char* buf);

Istrstream::istrstream( const char* buf, streamsize size);

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

  • buf - указатель на символьный массив, который используется как источник данных

  • содержимое buf должно завершаться нулевым байтом

  • size - число используемых символов строки

/* пример ниже для ввода и вывода */

3.18

Создание буферизированного потока вывода.

ostrstream::ostrstream (char* buf, streamsize size, openmode mode = ios::out);

ostrstream::ostratream();

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

  • buf - указатель на массив, который используется как приемник данных

  • size - размер символьного массива ( если массив будет переполнен, то возникнет ошибка )

  • mode - способ открытия

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

Функция pcount().

streamsize pcount();

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

  • метод буферизированного потока

  • предназначена для определения количества символов, записанных в символьный массив

  • возвращает количество записанных символов с учетом нулевого байта

Доступ к динамическому массиву.

char* str();

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

  • метод буферизированного потока

  • предназначена для заморозки ( блокировки для вывода ) динамического массива и открытия доступа к его элементам

  • возвращает указатель на байтовый массив

Функция freeze().

void freeze(bool action = true);

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

  • метод буферизированного потока

  • предназначена для управления доступом к динамическому массиву

  • true - заморозка массива

  • false - разморозка массива

#include <iostream>

#include <strstream>

using namespace std;

Int main(){

char ch, *s, str[80];

double d; int i;

strstream sio;

sio << "test dynamical array ";

sio << 123.456 << " " << 789;

i = sio.pcount() // считаем кол-во символов в потоке

s = sio.str(); // получаем массив с содержимым потока

for (int c = 0; c < i; ++c) cout << s[c];

sio << " 111 " ; // ошибка - запись в замороженный поток

sio.freeze(false); // размораживаем поток

sio.clear(); // убираем badbit

sio << " 222 ";

sio >> ch;

while ( ch ){

cout << ch;

sio >> ch;

}

return 0;

}

3.19

Бинарный буферизированный ввод-вывод.

Массивы, связанные с буферизированными потоками могут содержать бинарную информацию.

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

  • для распознавания конца массива используется метод eof()

  • для чтения и записи символов используются методы get() , put()

  • для чтения - записи блоков данных - read(), write()

#include <iostream>

#include <strstream>

using namespace std;

Int main(){

char *s = "\1\2\3\4\5\6\7\8\9\10";

Istrstream si(s);

char ch;

si.get(ch);

while( !si.eof() ){

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

si.get(ch);

}

return 0;

}

// =====================

0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x8 0xa

// =====================

3.20

Пространства имён предназначены для локализации имен идентификаторов и предотвращения их конфликтов-одно и то же имя, упомянутое в разных контекстах больше не вызывает конфликтов. Теперь стандартная библиотека с++ выведена из глобального пространства имён и определена внутри собственного пространства имен std, что уменьшило конфликты.

Объявление пространства имен

namespace nnamespace_name{

// ...

}

Особенности

  • предотвращение конликтов имен фукнций или переменных

  • можно разбить объявление одного и того же пространства имен на несколько частей

  • нельзя объявить пространство имен внутри функции либо любой другой ограниченной области видимости

  • могут быть вложенными

  • пространство имен - область видимости

3.21

Обращение к элементам пространства имен.

Код, расположенный внутри некоторого пространства имён, может обращаться непосредственно к идентификаторам, объявленным внутри этого же пространства имён, а объекты к своим методам.

Чтобы обратиться к элементу пространства имён извне, следует перед его именем указать имя пространства и оператор разрешения видимости name::member.

#include <iostream>

using namespace std;

namespace counter_namespace

{

int up;

int lo;

class counter

{

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