Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Signed Integer Parsers (int_, etc.)

Boost , Spirit 2.5.2 , Numeric Parsers

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Description

int_parser может анализировать подписанные целые числа произвольной длины и размера. Это почти то же самое, что и uint_parser. Единственным отличием является дополнительная задача разбора знака '+' или '-', предшествующего номеру. Интерфейс класса такой же, как у uint_parser.

Парсер int_parser может использоваться для разбора обычных примитивных целых чисел C/C++ или даже определяемых пользователем скаляров, таких как бигинты (неограниченные точные целые числа), при условии, что тип соответствует определенным требованиям к выражению (документировано ниже).

Header
// forwards to <boost/spirit/home/qi/numeric/int.hpp>
#include <boost/spirit/include/qi_int.hpp>

Кроме того, см. Включить структуру .

Namespace

Имя

boost::::lit : boost::spirit::qi::lit

boost::spirit::short_ // alias: boost::spirit::qi::short_

boost::::int_ //lias: boost::spirit::qi::int_

boost::::long_ //lias: boost::spirit::qi::long_

boost::::long_long : boost::spirit::qi::long_long

[Note]Note

long_long доступен только на платформах, где константа препроцессора BOOST_HAS_LONG_LONG определяется (т.е. на платформах, имеющих встроенную поддержку подписанных длинных длинных (64 бит) неподписанных целых типов).

[Note]Note

lit повторно используется парсерами и числовыми парсерами . В общем, char parser создается, когда вы проходите в персонаже, а числовой парсер создается, когда вы используете числовой буквальный.

Synopsis
template <
    typename T
  , unsigned Radix
  , unsigned MinDigits
  , int MaxDigits>
struct int_parser;
Template parameters

Параметр

Описание

По умолчанию

T

Числовой базовый тип числового парсера.

нет

Radix

База радикса. Это может быть любое основание от 2..10 и 16

10

MinDigits

Минимальное допустимое количество цифр.

1

MaxDigits

Максимальное допустимое количество цифр. Если это -1, то максимальный предел становится безграничным.

-1

Model of

Notation

n

Объект T, числовой базовый тип.

num

Буквальное число, любое подписанное целочисленное значение или Lazy Argument, которое оценивает подписанное целочисленное значение.

Expression Semantics

Семантика выражения определяется только там, где она отличается от или не определена в PrimitiveParser.

Выражение

Семантика

short_
int_
long_
long_long

Парсировать подписанное целое число с использованием радикса по умолчанию (10).

lit(num)
short_(num)
int_(num)
long_(num)
long_long(num)

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

int_parser<
    T, Radix, MinDigits, MaxDigits
>()

int_parser<
    T, Radix, MinDigits, MaxDigits
>()

[ORIG_END] -->
Radix, минимум MinDigits и максимум MaxDigits.

int_parser<
    T, Radix, MinDigits, MaxDigits
>()(num)

int_parser<
    T, Radix, MinDigits, MaxDigits
>()(num)

[ORIG_END] -->

Сопоставьте буквальный num типа T с использованием радикса Radix, с минимумом MinDigits и максимумом MaxDigits. Парсер выйдет из строя, если парсируемое значение не равно указанному значению.

[Important]Important

Все цифровые парсеры проверяют условия переполнения на основе типа T Соответствующий int_parser<> был инстанциирован. Если парсинговое число переполняет этот тип, парсинг не удается. Пожалуйста, имейте в виду, что проверка переполнения не основана на типе предоставленного атрибута, а зависит исключительно от параметра шаблона T.

Attributes

Выражение

Атрибут

lit(num)

неиспользованный

short_
short_(num)

int_
int_(num)

int

long_
long_(num)

long

long_long
long_long(num)

long_long
long_long(num)

[ORIG_END] -->

boost::long_long_type

int_parser<
    T, Radix, MinDigits, MaxDigits
>()
int_parser<
    T, Radix, MinDigits, MaxDigits
>()(num)

T

Complexity

O(N), где N - число разрезаемых цифр плюс знак.

Minimum Expression Requirements for T

Для типа числового основания T требования к выражению должны быть действительными:

Выражение

Семантика

T()

По умолчанию.

T(0)

Построение из int.

n + n

Добавление.

n - n<8

Вычитание.

n n<8

Умножение.

std::numeric_limits<T>::is_bounded

true или false, если T ограничен.

std::численные_лимиты<T>::цифры

Максимальные цифры для T, радиксовые цифры. Требуется только в том случае, если T ограничен.

std::numeric_limits<T>::digits10

Максимальные показатели для T, основание 10. Требуется только в том случае, если T ограничен.

std::численные_лимиты<T>::max()

Максимальное значение T. Требуется только в том случае, если T ограничен.

std::численные_лимиты<T>::min()

Минимальное значение T. Требуется только в том случае, если T ограничен.

Example
[Note]Note

Испытательный ремень для примера (примеров) ниже представлен в разделе Основные примеры.

Некоторые используют декларации:

using boost::phoenix::val;
using boost::spirit::qi::lit;
using boost::spirit::qi::int_;

Основные подписанные целые числа:

// signed int
test_parser("+12345", int_);
test_parser("-12345", int_);
test_parser("+12345", int_(12345));
test_parser("-12345", int_(-12345));
test_parser("+12345", int_(val(12345)));
test_parser("-12345", int_(val(-12345)));
// literals
test_parser("+12345", lit(12345));
test_parser("-12345", lit(-12345));
test_parser("+12345", lit(val(12345)));
test_parser("-12345", lit(val(-12345)));


PrevUpHomeNext

Статья Signed Integer Parsers (int_, etc.) раздела Spirit 2.5.2 Numeric Parsers может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Numeric Parsers ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 04:54:29/0.007957935333252/1