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

Character Classification Generators (alnum, digit, etc.)

Boost , Spirit 2.5.2 , Char Generators

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

Библиотека имеет полный репертуар одиночных генераторов символов для классификации символов. Это включает в себя обычные генераторы<alnum>,<alpha>,<digit>,<xdigit>и т. Д. Эти генераторы имеют ассоциированныйКодирование символов пространства имен. Это необходимо при выполнении основных операций, таких как принуждение нижнего или верхнего корпуса.

Header
// forwards to <boost/spirit/home/karma/char/char_class.hpp>
#include <boost/spirit/include/karma_char_class.hpp>

См. такжеВключить структуру.

Namespace

Имя

<ns::alnum>

ns::alpha

ns::blank

<ns::cntrl>

<ns::digit>

<ns::graph>

ns::lower

ns::print

ns::punct

ns::space

ns::upper

ns::xdigit

В приведенной выше таблице<ns>представляет собойпространство имен символов, используемое соответствующим генератором класса символов. Все перечисленные генераторы имеют обязательный атрибут<Ch>и не будут компилироваться, если атрибут не связан.

Model of
Expression Semantics

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

выражение

Семантика

<ns::alnum>

Если обязательный атрибут удовлетворяет понятию<std::isalnumПространстве имен для кодирования символов, генератор преуспевает после испускания своего атрибута (если основной выходной поток не сообщает об ошибке). Этот генератор не работает иначе, не генерируя ничего.

ns::alpha

Если обязательный атрибут удовлетворяет понятию<std::isalphaПространстве имен для кодирования символов, генератор преуспевает после испускания своего атрибута (если основной выходной поток не сообщает об ошибке). Этот генератор не работает иначе, не генерируя ничего.

ns::blank

<ns::cntrl>

<ns::digit>

Если обязательный атрибут удовлетворяет понятию<std::isdigitПространстве имен для кодирования символов, генератор преуспевает после испускания своего атрибута (если основной выходной поток не сообщает об ошибке). Этот генератор не работает иначе, не генерируя ничего.

<ns::graph>

Если обязательный атрибут удовлетворяет понятию<std::isgraphПространстве имен для кодирования символов, генератор преуспевает после испускания своего атрибута (если основной выходной поток не сообщает об ошибке). Этот генератор не работает иначе, не генерируя ничего.

ns::print

Если обязательный атрибут удовлетворяет понятию<std::isprintПространстве имен для кодирования символов, генератор преуспевает после испускания своего атрибута (если основной выходной поток не сообщает об ошибке). Этот генератор не работает иначе, не генерируя ничего.

ns::punct

Если обязательный атрибут удовлетворяет понятию<std::ispunctПространстве имен для кодирования символов, генератор преуспевает после испускания своего атрибута (если основной выходной поток не сообщает об ошибке). Этот генератор не работает иначе, не генерируя ничего.

ns::xdigit

ns::lower

ns::upper

Если обязательный атрибут удовлетворяет понятию<std::isupperПространстве имен для кодирования символов, генератор преуспевает после испускания своего атрибута (если основной выходной поток не сообщает об ошибке). Этот генератор не работает иначе, не генерируя ничего.

ns::space

Если факультативный атрибут удовлетворяет понятию<std::isspaceПространстве имен для кодирования символов, генератор преуспевает после испускания своего атрибута (если основной выходной поток не сообщает об ошибке). Этот генератор не работает иначе, не генерируя ничего. При отсутствии атрибута этот генератор испускает один пространственный символ в наборе символов, определенном<ns>

.

Возможные значения для<ns>описаны в разделеПространство имен для кодирования символов.

[Note]Note

Генераторы<alpha>и<alnum>могут показаться неожиданными, если их использовать в директиве<lower[]>или<upper[]>. Обе директивы дополнительно применяют семантику<std::islower>или<std::isupper>к соответствующему классу символов. Некоторые примеры:

std::string s;
std::back_insert_iterator<std::string> out(s);
generate(out, lower[alpha], 'a');               // succeeds emitting 'a'
generate(out, lower[alpha], 'A');               // fails 

Директива генератора<upper[]>действует соответственно.

Attributes

Все перечисленные генераторы классов символов могут принимать любой атрибут<Ch>. Все генераторы классов символов (за исключением<space>) требуют атрибута и не могут компилировать иное.

[Note]Note

В дополнение к их обычному атрибуту типа<Ch>все перечисленные генераторы также принимают экземпляр<boost::optional<Ch>>. Если<boost::optional<>>инициализируется (имеет значение), генераторы ведут себя так, как если бы их атрибут был экземпляром<Ch>и испускают значение, сохраненное в<boost::optional<>>. В противном случае генераторы не сработают.

Complexity

O(1)

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

Example
[Note]Note

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

Некоторые включают:

#include <boost/spirit/include/karma.hpp>
#include <boost/spirit/include/support_utree.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/fusion/include/std_pair.hpp>
#include <iostream>
#include <string>

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

using boost::spirit::karma::alpha;
using boost::spirit::karma::upper;

Использование генератора<alpha>:

test_generator_attr("a", alpha, 'a');
test_generator_attr("A", alpha, 'A');
test_generator_attr("", alpha, '1');          // fails (as isalpha('1') is false)
test_generator_attr("A", upper[alpha], 'A');
test_generator_attr("", upper[alpha], 'a');   // fails (as isupper('a') is false)


PrevUpHomeNext

Статья Character Classification Generators (alnum, digit, etc.) раздела Spirit 2.5.2 Char Generators может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Char Generators ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 05:58:49/0.0073761940002441/0