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

String Generators (string, lit)

Boost , Spirit 2.5.2 , String 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

Генераторы струн, описанные в этом разделе:

Генератор<string>излучает строку символов. Генератор<string>неявно дословно:<delimit>парсер не применяется между символами строки.<string>Генератор имеет ассоциированныйКодирование символов пространства имен. Это необходимо при выполнении основных операций, таких как принуждение нижнего или верхнего корпуса. Примеры:

string("Hello")
string(L"Hello")
string(s)         // s is a std::string

<lit>, как<string>, также излучает строку символов. Главное отличие состоит в том, что<lit>не потребляет атрибут. При этом, например,<"hello">или<std::basic_string>,<lit>. Примеры:

"Hello"
lit("Hello")
lit(L"Hello")
lit(s)            // s is a std::string
Header
// forwards to <boost/spirit/home/karma/string/lit.hpp>
#include <boost/spirit/include/karma_string.hpp>

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

Namespace

Имя

boost::spirit::lit // alias: boost::spirit::karma::lit

ns::string

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

Model of

Notation

s

Специфическая строка класса символов (см. Типы классов символов) или ленивый аргумент, который оценивает значение конкретной строки класса символов

S

Тип конкретной строки класса символов<s>.

ns

Пространство имен.

Expression Semantics

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

выражение

Описание

s

Сформируйте строку буквально<s>. Этот генератор никогда не выходит из строя (если основной выходной поток не сообщает об ошибке).

lit(s)

Сформируйте строку буквально<s>. Этот генератор никогда не выходит из строя (если основной выходной поток не сообщает об ошибке).

ns::string

Создайте строку, предоставленную обязательным атрибутом, интерпретируемым в наборе символов, определенном<ns>. Этот генератор никогда не выходит из строя (если основной выходной поток не сообщает об ошибке).

ns::string(s)

Генерировать строку<s>, как предусмотрено непосредственным буквальным значением, из которого инициализируется генератор. Если этот генератор имеет ассоциированный атрибут, он преуспевает только в том случае, если атрибут равен непосредственному буквальному (если основной выходной поток не сообщает об ошибке). В противном случае этот генератор выходит из строя и не генерирует никакого вывода.

[Note]Note

Генераторы<lit(s)>и<string(s)>могут быть инициализированы либо с использованием строкового буквального значения (то есть<"abc">), либо с использованием<std::basic_string<char_type, ...>>, где<char_type>является требуемым типом значения базовой последовательности символов.

[Caution]Caution

Генератор<string(s)>до версии 2.4.1 Spirit имеет недокументированную особенность.<s>—<s>,<s>,<s>,<s>,<s>,<s>,<s>. Эта проблема была исправлена в Spirit V2.4.2.

Attributes

выражение

атрибут

s

unused

lit(s)

unused

ns::string

S, атрибут является обязательным (в противном случае компиляция потерпит неудачу)

ns::string(s)

<S>, атрибут необязателен, если он поставляется, генератор сравнивает атрибут с<s>и преуспевает только в том случае, если оба равны, в противном случае

[Note]Note

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

Complexity

O(N), где N - число символов, излучаемых генератором строки

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::lit;
using boost::spirit::ascii::string;

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

test_generator("abc", "abc");
test_generator("abc", lit("abc"));
test_generator("abc", lit(std::string("abc")));
test_generator_attr("abc", string, "abc");
test_generator("abc", string("abc"));
test_generator("abc", string(std::string("abc")));
test_generator_attr("abc", string("abc"), "abc");
test_generator_attr("", string("abc"), "cba");     // fails (as "abc" != "cba")


PrevUpHomeNext

Статья String Generators (string, lit) раздела Spirit 2.5.2 String Generators может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

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