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

на главную

Жанры

Программирование. Принципы и практика использования 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); // ой!

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

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

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

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Огненный князь 4

Машуков Тимур
4. Багряный восход
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 4

Путь Чести

Щукин Иван
3. Жизни Архимага
Фантастика:
фэнтези
боевая фантастика
6.43
рейтинг книги
Путь Чести

Неудержимый. Книга XIX

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

Физрук 2: назад в СССР

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

Камень. Книга шестая

Минин Станислав
6. Камень
Фантастика:
боевая фантастика
7.64
рейтинг книги
Камень. Книга шестая

Para bellum

Ланцов Михаил Алексеевич
4. Фрунзе
Фантастика:
попаданцы
альтернативная история
6.60
рейтинг книги
Para bellum

Девятое правило дворянина

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

Делегат

Астахов Евгений Евгеньевич
6. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Делегат

Шериф

Астахов Евгений Евгеньевич
2. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
6.25
рейтинг книги
Шериф

Мимик нового Мира 14

Северный Лис
13. Мимик!
Фантастика:
юмористическое фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 14

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

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

Темный Лекарь 4

Токсик Саша
4. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 4

Возвышение Меркурия. Книга 14

Кронос Александр
14. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 14