Чтение онлайн

на главную

Жанры

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:
image l:href="#"/>

Если не указано иное, операция ввода возвращает ссылку на объект класса

istream
, поэтому можно создавать цепочки таких операций, например
cin>>x>>y
;.

Функции

get
и
getline
помещают после символов, записанных в ячейки
p[0]
и т.д., число
0
(если символы были введены);
функция
getline
удаляет признак конца ввода (
t
из потока ввода, если он обнаружен, а функция
get
этого не делает. Функция
read(p,n)
не записывает число
0
в массив после считанных символов. Очевидно, что операторы форматированного ввода проще в использовании и менее уязвимы для ошибок, чем операции неформатированного ввода.

Б.7.4. Операции вывода

Почти все операции вывода описаны в заголовке

<ostream>
, за исключением операции записи в объекты класса
string
; такие операции описаны в заголовке
<string>
.

Если не указано иное, операции вставки в поток

ostream
возвращают ссылку на его объекты, поэтому можно создавать цепочки операций вывода, например
cout << x<<y
;.

Б.7.5. Форматирование

Формат потока ввода-вывода управляется комбинацией типа объекта, состояния потока, информацией о локализации (см. раздел

<locale>
) и явными операциями. Большая часть информации об этом изложена в главах 10-11. Здесь мы просто перечислим стандартные манипуляторы (операции, модифицирующие поток), поскольку они обеспечивают наиболее простой способ изменения формата.

Вопросы локализации выходят за рамки рассмотрения настоящей книги.

Б.7.6. Стандартные манипуляторы

В стандартной библиотеке предусмотрены манипуляторы, соответствующие разнообразным изменениям формата. Стандартные манипуляторы определены в заголовках

<ios>
,
<istream>
,
<ostream>
,
<iostream>
и
<iomanip>
(для манипуляторов, получающих аргументы).

Каждая из этих операций возвращает ссылку на свой первый операнд потока

s
.

Рассмотрим пример.

cout << 1234 << ',' << hex << 1234 << ',' << oct << 1234 << endl;

Этот код выводит на экран следующую строку:

1234,4d2,2322

В свою очередь, код

cout << '(' << setw(4) << setfill('#') << 12 << ") (" << 12 << ")\n";

выводит на экран такую строку:

(##12) (12)

Для

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

b.setf(ios_base::fmtflags(0),ios_base::floatfield)

См. главу 11.

Б.8. Манипуляции строками

В стандартной библиотеке предусмотрены операции классификации символов в заголовке

<cctype>
, строки с соответствующими операциями в заголовке
<string>
, регулярные выражения в заголовке
<regex>
(C++0x) и поддержка С-строк в заголовке
<cstring>
.

Б.8.1. Классификация символов

Символы из основного набора могут быть классифицированы так, как показано ниже.

Кроме того, в стандартной библиотеке описаны две полезные функции для изменения регистра символа.

Расширенные наборы символов, такие как Unicode, также поддерживаются стандартной библиотекой, но эта тема выходит за рамки рассмотрения настоящей книги.

Б.8.2. Строки

Класс

string
из стандартной библиотеки представляет собой специализацию общего шаблонного класса
basic_string
для символьного типа
char
; иначе говоря, объект
string
— это последовательность переменных типа
char
.

Б.8.3. Сравнение регулярных выражений

Библиотека регулярных выражений еще не является частью стандартной библиотеки, но вскоре станет ею и будет широко доступной, поэтому мы решили привести ее в этом разделе. Более подробные объяснения изложены в главе 23. Ниже перечислены основные функции из заголовка

<regex>
.

Поиск (searching) строки, соответствующей регулярному выражению в (произвольно длинном) потоке данных, — обеспечивается функцией

regex_search
.

Сопоставление (matching) регулярного выражения со строкой (известного размера) — обеспечивается функцией

regex_match
.

Замена соответствий (replacement of matches) — обеспечивается функцией

regex_replace
; в данной книге не описывается; см. профессиональные учебники или справочники.

Результатом работы функций

regex_search
и
regex_match
является коллекция соответствий, как правило, представленных в виде объекта класса
smatch
.

regex row("^[\\w ]+(\\d+)(\\d+)(\\d+)$"); // строка данных

Поделиться:
Популярные книги

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Маяк надежды

Кас Маркус
5. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Маяк надежды

Великий перелом

Ланцов Михаил Алексеевич
2. Фрунзе
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Великий перелом

Сопротивляйся мне

Вечная Ольга
3. Порочная власть
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Сопротивляйся мне

Инквизитор Тьмы 2

Шмаков Алексей Семенович
2. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 2

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Падение Твердыни

Распопов Дмитрий Викторович
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Падение Твердыни

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Ох уж этот Мин Джин Хо 2

Кронос Александр
2. Мин Джин Хо
Фантастика:
попаданцы
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 2

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6