Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_voprosy_k_ekzamenu_po_C.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
241.66 Кб
Скачать

35. Строковые потоки. Базовые классы строковых потоков: istringstream, ostringstream, stringstream

Строковые потоки позволяют считывать и записывать информацию из областей оперативной памяти так же, как из файла, с консоли или на дисплей. В стандартной библиотеке определено три класса строковых потоков:

  • istringstream — входные строковые потоки;

  • ostringstream — выходные строковые потоки;

  • stringstream — двунаправленные строковые потоки.

Эти классы определяются в заголовочном файле <sstream> и являются производными от классов istream, ostream и iostream соответственно, поэтому они наследуют перегруженные операции « и », флаги форматирования, манипуляторы, методы, состояние потоков и т. д.

Строковые потоки создаются и связываются с этими участками памяти с помощью конструкторов:

explicit istringstream(int mode = ios::in);

explicit ostringstream(int mode = ios::out) и т.д.

В строковых потоках описан метод str, возвращающий копию строки или устанавливающий ее значение:

string str() const;

void str(const string & s);

Проверять строковый поток на переполнение не требуется, поскольку размер строки изменяется динамически.

36. Потоки и типы, определенные пользователем

Для ввода и вывода в потоках используются перегруженные для всех стандартных типов операции чтения и извлечения « и ». При этом выбор конкретной операции определяется типом фактических параметров.

Для того чтобы вводить и выводить величины типов, определенных пользователем, требуется перегрузить операции. Это бинарные операции, левым операндом которых является объект-поток, а правым — объект, который требуется извлечь или поместить в этот поток. Возвращаемое значение должно быть ссылкой на поток, чтобы можно было организовывать цепочки операций, как и в случае стандартных типов.

37. Строки. Конструкторы и присваивание строк

Библиотека содержит функции для работы с такими массивами, унаследованные от С и описанные в заголовочном файле <string.h> (<cstring>).

Основные действия со строками выполняются в нем с помощью операций и методов, а длина строки изменяется динамически в соответствии с потребностями. Для использования класса необходимо подключить к программе заголовочный файл <string>.

В классе string определено несколько конструкторов. Ниже в упрощенном виде приведены заголовки наиболее употребительных:

string();

string(const char * );

string(const char *. int n);

string(string &);

Первый конструктор создает пустой объект типа string.

Второй создает объект типа string на основе строки старого стиля, третий создает объект типа string и записывает туда n символов из строки, указанной первым параметром.

Последний конструктор является конструктором копирования, который создает новый объект как копию объекта, переданного ему в качестве параметра.

В классе string определены три операции присваивания:

strings operator=(const string& str);

string& operator=(const char* s);

string& operator=(char c);

38. Создание объекта string. Операция присваивания строк

В классе string определены три операции присваивания:

strings operator=(const string& str);

string& operator=(const char* s);

string& operator=(char c);

Для присваивания части одной строки другой служит функция assign:

assign(const string& str);

assign(const string& str, size_type pos, size_type n):

assign(const char* s, size_type n);

Первая форма функции присваивает строку str вызывающей строке, при этом действие функции эквивалентно операции присваивания:

string s1(“Вася”). s2;

s2.assign(sl); // Равносильно s2 = s1

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