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

Unsigned Integer Parsers (uint_, 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

Класс<uint_parser>является самым простым среди членов числового пакета.<uint_parser>может разбирать неподписанные целые числа произвольной длины и размера.<uint_parser>парсер может использоваться для разбора обычных примитивных целых чисел C/C++ или даже определяемых пользователем скаляров, таких как бигинты (неограниченные точные целые числа), при условии, что тип следует определенным требованиям к выражению (документировано ниже).<uint_parser>- это класс шаблонов. Шаблонные параметры тонко настраивают его поведение.

Header
// forwards to <boost/spirit/home/qi/numeric/uint.hpp>
#include <boost/spirit/include/qi_uint.hpp>

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

Namespace

Имя

<boost::spirit::lit// alias: boost::spirit::qi::lit>

<boost::spirit::bin// alias: boost::spirit::qi::bin>

<boost::spirit::oct// alias: boost::spirit::qi::oct>

boost::spirit::hex // alias: boost::spirit::qi::hex

<boost::spirit::ushort_// alias: boost::spirit::qi::ushort_>

<boost::spirit::ulong_// alias: boost::spirit::qi::ulong_>

<boost::spirit::uint_// alias: boost::spirit::qi::uint_>

<boost::spirit::ulong_long// alias: boost::spirit::qi::ulong_long>

[Note]Note

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

[Note]Note

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

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

Параметр

Описание

по умолчанию

<T>

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

Нет

<Radix>

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

.

10

<MinDigits>

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

1

<MaxDigits>

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

-1

Model of

Notation

n

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

num

Буквальное число, любое неподписанное целое число, или ленивый аргумент, который оценивает неподписанное целое число.

Expression Semantics

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

выражение

Семантика

ushort_
uint_
ulong_
ulong_long

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

lit(num)
ushort_(num)
uint_(num)
ulong_(num)
ulong_long(num)

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

bin
oct
hex

Произведите неподписанное целое число, используя радикс 2 для<bin>, радикс 8 для<oct>и радикс 16 для<hex>.

bin(num)
oct(num)
hex(num)

Сопоставьте буквальный<num>с использованием радикса 2 для<bin>, радикса 8 для<oct>и радикса 16 для<hex>. Парсер выйдет из строя, если парсируемое значение не равно указанному значению.

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

Просмотрите неподписанное целое число типа<T>с использованием радикса<Radix>, с минимумом<MinDigits>и максимумом<MaxDigits>.

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

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

[Important]Important

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

Attributes

выражение

атрибут

lit(num)

<unused>

ushort_
ushort_(num)

<unsignedshort>

uint_
uint_(num)
bin
bin(num)
oct
oct(num)
hex
hex(num)

<unsignedint>

ulong_
ulong_(num)

<unsignedlong>

ulong_long
ulong_long(num)

<boost::ulong_long_type>

uint_parser<
    T, Radix, MinDigits, MaxDigits
>()
uint_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>

Умножение.

<std::numeric_limits<T>::is_bounded>

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

<std::numeric_limits<T>::digits>

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

std::numeric_limits<T>::digits10

Максимальные показатели для<T>, основание 10. Но только в том случае, если<T>.

<std::numeric_limits<T>::max()>

Максимальное значение<T>. Но только в том случае, если<T>.

<std::numeric_limits<T>::min()>

Минимальное значение<T>. Но только в том случае, если<T>ограничен.

Example
[Note]Note

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

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

using boost::phoenix::val;
using boost::spirit::qi::lit;
using boost::spirit::qi::uint_;
using boost::spirit::qi::uint_parser;

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

// unsigned int
test_parser("12345", uint_);
test_parser("12345", uint_(12345));
test_parser("12345", uint_(val(12345)));
// literals
test_parser("12345", lit(12345));
test_parser("12345", lit(val(12345)));

Тысячи разделенных парсеров:

uint_parser<unsigned, 10, 1, 3> uint3_p;        //  1..3 digits
uint_parser<unsigned, 10, 3, 3> uint3_3_p;      //  exactly 3 digits
test_parser("12,345,678", uint3_p >> *(',' >> uint3_3_p));


PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:14:12/0.0081779956817627/0