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

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

Жанры

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

while (getline(in,line)) { // проверка строки данных

smatch matches;

if (!regex_match(line, matches, row))

error("bad line", lineno);

// проверка строки:

int field1 = from_string<int>(matches[1]);

int field2 = from_string<int>(matches[2]);

int field3 = from_string<int>(matches[3]);

// ...

}

Синтаксис

регулярных выражений основан на символах, имеющих особый смысл (см. главу 23).

Некоторые классы символов поддерживаются аббревиатурами.

Б.9. Численные методы

В стандартной библиотеке языка C++ содержатся основные строительные конструкции для математических (научных, инженерных и т.д.) вычислений.

Б.9.1. Предельные значения

Каждая реализация языка C++ определяет свойства встроенных типов, чтобы программисты могли использовать эти средства для проверки предельных значений, установки предохранителей и т.д.

В заголовке

<limits>
определен класс
numeric_limits <T>
для каждого встроенного или библиотечного типа
T
. Кроме того, программист может определить класс
numeric_limits<X>
для пользовательского числового типа
X
. Рассмотрим пример.

class numeric_limits<float> {

public:

static const bool is_specialized = true;

static const int radix = 2; // основание системы счисления

// (в данном случае двоичная)

static const int digits = 24; // количество цифр в мантиссе

// в текущей системе счисления

static const int digits10 = 6; // количество десятичных цифр

// в мантиссе

static const bool is_signed = true;

static const bool is_integer = false;

static const bool is_exact = false;

static float min { return 1.17549435E–38F; } // пример

static float max { return 3.40282347E+38F; } // пример

static float epsilon { return 1.19209290E–07F; } // пример

static float round_error { return 0.5F; } // пример

static float infinity { return /* какое-то значение */; }

static float quiet_NaN { return /*
какое-то значение */; }

static float signaling_NaN { return /* какое-то значение */; }

static float denorm_min { return min; }

static const int min_exponent = –125; // пример

static const int min_exponent10 = –37; // пример

static const int max_exponent = +128; // пример

static const int max_exponent10 = +38; // пример

static const bool has_infinity = true;

static const bool has_quiet_NaN = true;

static const bool has_signaling_NaN = true;

static const float_denorm_style has_denorm = denorm_absent;

static const bool has_denorm_loss = false;

static const bool is_iec559 = true; // соответствует системе
IEC-559

static const bool is_bounded = true;

static const bool is_modulo = false;

static const bool traps = true;

static const bool tinyness_before = true;

static const float_round_style round_style =

round_to_nearest;

};

В заголовках

<limits.h>
и
<float.h>
определены макросы, определяющие основные свойства целых чисел и чисел с плавающей точкой.

Б.9.2. Стандартные математические функции

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

<cmath>
и
<complex>
).

Существуют версии этих функций, принимающие аргументы типа

float
,
double
,
long double
и
complex
. У каждой из этих функций тип возвращаемого значения совпадает с типом аргумента.

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

errno
.

Б.9.3. Комплексные числа

В стандартной библиотеке определены типы для комплексных чисел

complex<float>
,
complex<double>
и
complex<long double>
. Класс complex
<Scalar>
, где
Scalar
— некий другой тип, поддерживающий обычные арифметические операции, как правило, работоспособен, но не гарантирует переносимости программ.

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

Эпоха Опустошителя. Том 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
рейтинг книги
Лишняя дочь