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

на главную - закладки

Жанры

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:

template<class Scalar> class complex {

// комплексное число — это пара скалярных значений,

// по существу — пара координат

Scalar re, im;

public:

complex(const Scalar & r, const Scalar & i):re(r), im(i) { }

complex(const Scalar & r):re(r),im(Scalar ) { }

complex:re(Scalar ), im(Scalar ) { }

Scalar real { return re; } // действительная
часть

Scalar imag { return im; } // мнимая часть

// операторы : = += –= *= /=

};

Кроме этих членов, в классе

<complex>
предусмотрено много полезных операций.

Кроме того, к комплексным числам можно применять стандартные математические функции (см. раздел Б.9.2). Примечание: в классе

complex
нет операций
<
или
%
(см. также раздел 24.9).

Б.9.4. Класс valarray

Объект стандартного класса

valarray
— это одномерный массив чисел; иначе говоря, он предусматривает арифметические операции для массивов (аналогично классу
Matrix
из главы 24), а также срезы (slices) и шаги по индексу (strides).

Б.9.5. Обобщенные числовые алгоритмы

Эти алгоритмы из раздела

<numeric>
обеспечивают общие варианты типичных операций над последовательностями числовых значений.

Б.10. Функции стандартной библиотеки языка С

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

• Ввод-вывод в стиле языка C.

• Строки в стиле языка C.

• Управление памятью.

• Дата и время.

• Остальное.

Библиотека языка С содержит намного больше функций, чем описано в этой книге; рекомендуем читателям обратиться к хорошим учебникам по языку С, например, к книге Kernighan, Ritchie, The C Programming Language (K&R).

Б.10.1. Файлы

Система ввода-вывода, описанная в заголовке

<stdio>
, основана на файлах. Указатель на файл (
FILE*
) может относиться как к файлу, так и к стандартным потокам ввода и вывода,
stdin
,
stdout
и
stderr
. Стандартные потоки доступны по умолчанию; остальные файлы должны быть открыты явным образом.

Режим — это строка, содержащая одну или несколько директив, определяющих, как именно должен быть открыт

файл.

В конкретной операционной системе может быть (и, как правило, так и есть) больше возможностей. Некоторые режимы могут комбинироваться, например, инструкция

fopen("foo","rb")
пытается открыть файл
foo
для чтения в бинарном режиме. Режимы ввода-вывода для потоков из библиотек
stdio
и
iostream
должны быть одинаковыми (см. раздел Б.7.1)

Б.10.2. Семейство функций printf

Наиболее популярными функциями в стандартной библиотеке языка С являются функции ввода-вывода. Тем не менее рекомендуем использовать библиотеку

iostream
, потому что она безопасна с точки зрения типов и допускает расширение. Функция форматированного вывода
printf
используется очень широко (в том числе и в программах на языке C++) и часто имитируется в других языках программирования.

< image l:href="#"/>

В каждой версии число

n
— это количество записанных символов, а в случае неудачи — отрицательное число. На самом деле значение, возвращаемое функцией
printf
, практически всегда игнорируется.

Объявление функции

printf
имеет следующий вид:

int printf(const char* format ...);

Иначе говоря, эта функция получает строку в стиле языка С (как правило, строковый литерал), за которой следует список, состоящий из произвольного количества аргументов произвольного типа. Смысл этих дополнительных аргументов задается спецификаторами преобразования в форматной строке, например

%c
(вывести символ) и
%d
(вывести целое число). Рассмотрим пример.

int x = 5;

const char* p = "asdf";

printf("Значение x равно '%d', а значение p равно '%s'\n",x,s);

Символ, следующий за знаком

%
управляет обработкой аргументов. Первый знак
%
применяется к первому дополнительному аргументу (в данном примере спецификатор
%d
применяется к переменной
x
), второй знак
%
относится ко второму дополнительному аргументу (в данном примере спецификатор
%s
применяется к переменной
p
) и т.д. В частности, рассмотренный выше вызов функции
printf
приводит к следующему результату:

Значение x равно '5', а значение p равно 'asdf'

Затем происходит переход на новую строку.

В принципе соответствие между директивой преобразования

%
и типом, к которому она применяется, проверить невозможно. Рассмотрим пример.

printf("Значение x равно '%s', а значение p равно '%d'\n",x,p); // ой!

Набор спецификаторов преобразования довольно велик и обеспечивает большую гибкость (а также много возможностей сделать ошибку). За символом

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

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

Эпоха Опустошителя. Том I

Павлов Вел
1. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том I

Проблема майора Багирова

Майер Кристина
1. Спецназ
Любовные романы:
современные любовные романы
6.60
рейтинг книги
Проблема майора Багирова

Законы Рода. Том 13

Андрей Мельник
13. Граф Берестьев
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 13

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Прометей: каменный век

Рави Ивар
1. Прометей
Фантастика:
альтернативная история
6.82
рейтинг книги
Прометей: каменный век

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

Цвет сверхдержавы - красный. Трилогия

Симонов Сергей
Цвет сверхдержавы - красный
Фантастика:
попаданцы
альтернативная история
8.06
рейтинг книги
Цвет сверхдержавы - красный. Трилогия

Болтливый мертвец

Фрай Макс
7. Лабиринты Ехо
Фантастика:
фэнтези
9.41
рейтинг книги
Болтливый мертвец

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

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

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

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь