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

I/O

Boost , Chapter 1. Fusion 2.2 , Operator

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

I/O

Операторы ввода/вывода:<<<>и<>>>работают в общем на всех последовательностях Fusion. Операторы ввода/вывода перегружены в пространстве имен<boost::fusion><operator>>>

<operator<<>было перегружено для общих выходных потоков таким образом, чтоПоследовательность(s) выводится рекурсивным вызовом<operator<<>для каждого элемента. Аналогично, глобальный<operator>>>был перегружен для извлеченияПоследовательности(s) из общих входных потоков путем рекурсивного вызова<operator>>>для каждого элемента.

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

vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
cout << a;

<vector>как: (1.0 2 Привет, ребята!)

Библиотека определяет три манипулятора для изменения поведения по умолчанию:

Manipulators

tuple_open(arg)

Определяет символ, который выводится перед первым элементом.

tuple_close(arg)

Определяет символ, который выводится после последнего элемента.

tuple_delimiter(arg)

Определяет характер разграничителя между элементами.

Следовательно,<tuple_open>,<tuple_close>и<tuple_delimiter>могут быть<char>,<wchar_t>, C-струна или широкая C-струна.

Пример:

std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a;

<vector>,<a>как: [1.0, 2, Привет, ребята!]

Те же манипуляторы работают и с<operator>>>и<istream>. Предположим, что<std::cin>поток содержит следующие данные:

(1 2 3) [4:5]

Код:

vector<int, int, int> i;
vector<int, int> j;
std::cin >> i;
std::cin >> tuple_open('[') >> tuple_close(']') >> tuple_delimiter(':');
std::cin >> j;

<vector>(s)<i>и<j>.

Обратите внимание, что извлечениепоследовательности(s) с<std::string>или элементами строки в стиле C обычно не работает, поскольку представление потоковойпоследовательностине может быть однозначно разборчивым.

Header
#include <boost/fusion/sequence/io.hpp>
#include <boost/fusion/include/io.hpp>


<operator>>>Последовательность(s) иВзгляды, проживающие в разных пространствах имен, должны будут либо предоставлять своих собственных операторов ввода/вывода (возможно, пересылая операторам ввода/вывода синтеза), либо операторов ввода/вывода подъема синтеза (используя декларацию), в своих собственных пространствах имен для надлежащего поиска, зависящего от аргумента.


PrevUpHomeNext

Статья I/O раздела Chapter 1. Fusion 2.2 Operator может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Operator ::


реклама


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

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