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

Introduction

Boost , Chapter 1. Boost.Convert 2.0 , Chapter 1. Boost.Convert 2.0

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

Boost.Convertосновывается на опыте<boost::lexical_cast>и развивает идеи, связанные с преобразованием.

  • быть применимым к более широкому спектру сценариев развертывания, связанных с конверсией;
  • обеспечить более гибкую, настраиваемую и расширяемую структуру преобразования типа;
  • обеспечение общего последовательного поведения,
  • Унифицировать и равномерно развернутьРазличные средства преобразованиячерез единый интерфейс.

Boost.Convertобеспечивает новые и знакомые функции, связанные с конверсией/трансформацией, такие как:

  • (b) означает развертывание типов, которые не отвечают требованиямКонструктивность по умолчанию;
  • четыре типа обнаружения конверсии-неудачи:
    • в составе одного и того же технологического потока — основной и общий;
    • как разветвленный технологический поток — основанный на исключениях и основанный на функциях;
  • выбор немедленной или отсроченной обработки методом выбрасывания исключений и отказа от выбраковки;
  • гибкость конверсионного провалаобработкачерез:
    • исключение;
    • возвращаемое значение;
    • функция под названием Fallback;
  • Поддержка стандартных алгоритмов.

Boost.Convertсостоит из двух компонентов:

  • Интерфейс<boost::convert()>;
  • Расширяемая коллекция подключаемых преобразователей.

Интерфейс<boost::convert()>

  • (a) рекламирует, обеспечивает и обеспечивает определенноепоследовательное поведение;
  • Унифицирует и обеспечиваетодин последовательный интерфейсдля различных средств преобразования.

Коллекция подключаемых преобразователей не зависит от фасада<boost::convert()>API и рассчитана нарасширяемостьи длительность с течением времени. В настоящее время предусмотрены следующие преобразователи:

  • <boost::lexical_cast>Основанный,
  • <printf/scanf>Основанный,
  • <strtol>Вдохновленный,
  • <std::stringstream>Основанный,
  • <boost::spirit>Основано.

Преобразователи обеспечивают новую и знакомую функциональность и демонстрируют, как существующие и независимые средства преобразования могут быть включены в.Boost.Convertframework. Например, преобразователь на основе<std::stream>использует стандартную функциональность<std::streams>и обеспечивает:

  • конверсии типа строки и типа строки;
  • поддержка форматирования (<std::ios>- на основе точности, базы, верхнего/нижнего регистра, научного и т.д.);
  • поддержка различных<locale>;
  • <char>и<wchar_t>поддержки.

Следующий код демонстрирует преобразование массива целых чисел из их текстовогошестнадцатеричногопредставления. Он присваивает -1 тем, кто не конвертирует:

boost::array<char const*, 3> strs = {{ " 5", "0XF", "not an int" }};
std::vector<int>             ints;
boost::cnv::cstream           cnv;
// Configure converter to read hexadecimal, skip (leading) white spaces.
cnv(std::hex)(std::skipws);
std::transform(strs.begin(), strs.end(), std::back_inserter(ints),
    boost::cnv::apply<int>(boost::cref(cnv)).value_or(-1));
BOOST_TEST(ints.size() == 3); // Number of values processed.
BOOST_TEST(ints[0] ==  5);    // " 5"
BOOST_TEST(ints[1] == 15);    // "0XF"
BOOST_TEST(ints[2] == -1);    // "not an int"


PrevUpHomeNext

Статья Introduction раздела Chapter 1. Boost.Convert 2.0 Chapter 1. Boost.Convert 2.0 может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 1. Boost.Convert 2.0 ::


реклама


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

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