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

Chapter 19. Boost.Lexical_Cast 1.0

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Part I. The Boost C++ Libraries (BoostBook Subset)

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

Chapter 19. Boost.Lexical_Cast 1.0

Распространяется под лицензией Boost Software License, версия 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию по адресуhttp://www.boost.org/LICENSE_1_0.txt)

Иногда значение должно быть преобразовано в буквальную текстовую форму, такую какint, представленную какstd:строкаили наоборот, когдаstd:строкатолкуется какint. Такие примеры являются общими при преобразовании между типами данных, внутренними для программы и внешними для программы, такими как окна и файлы конфигурации.

Стандартные библиотеки C и C++ предлагают ряд возможностей для выполнения таких преобразований. Однако они различаются по своей простоте использования, расширяемости и безопасности.

Например, существует ряд ограничений с семейством стандартных функций C, типизированныхatoi:

  • Конверсия поддерживается только в одном направлении: от текста к внутреннему типу данных. Преобразование в другую сторону с использованием библиотеки C требует либо неудобства и скомпрометированной безопасности функцииsprintf, либо потери переносимости, связанной с нестандартными функциями, такими какitoa.
  • Диапазон поддерживаемых типов представляет собой лишь подмножество встроенных числовых типов, а именноint,longиdouble.
  • Диапазон типов не может быть расширен единообразно. Например, преобразование из представления струн в сложное или рациональное.

Стандартные функции C, типичные длястратола, имеют те же основные ограничения, но обеспечивают более точный контроль над процессом преобразования. Однако для обычного случая такой контроль часто либо не требуется, либо не используется. Семейство функцийscanfобеспечивает еще больший контроль, но также не обеспечивает безопасность и простоту использования.

Стандартная библиотека C++ предлагаетструнный потокдля обсуждаемого форматирования в ядре. Он предлагает большой контроль над форматированием и преобразованием ввода-вывода в произвольные типы и из них через текст. Однако для простых конверсий прямое использованиеструнного потокаможет быть либо неуклюжим (с введением дополнительных локальных переменных и потерей удобства инфикс-выражения), либо неясным (где объектыструнного потокасоздаются как временные объекты в выражении). Facets обеспечивают всеобъемлющую концепцию и возможность управления текстовым представлением, но их воспринимаемая сложность и высокий уровень ввода требуют чрезвычайной степени участия для простых конверсий и исключают всех, кроме нескольких программистов.

Шаблон функцииlexical_castпредлагает удобную и последовательную форму для поддержки общих преобразований в произвольные типы и из них, когда они представлены в виде текста. Упрощение, которое он предлагает, заключается в удобстве для таких конверсий. Для более сложных конверсий, например, когда точность или форматирование требуют более жесткого контроля, чем предлагается поведением по умолчаниюlexical_cast, обычныйstd::струнныйподход рекомендуется. Если преобразования числовые, тоусилите::числовой_castможет предложить более разумное поведение, чемлексический_cast.

Для хорошего обсуждения вариантов и вопросов, связанных с форматированием на основе струн, включая сравнениеструнного потока,lexical_castи других, см. статью Херба СаттераThe String Formatters of Manor Farm. Также обратите внимание на разделПроизводительность.

Последний пересмотр: 21 сентября 2016 года в 14:37:36 GMT


PrevUpHomeNext

Статья Chapter 19. Boost.Lexical_Cast 1.0 раздела The Boost C++ Libraries BoostBook Documentation Subset Part I. The Boost C++ Libraries (BoostBook Subset) может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Part I. The Boost C++ Libraries (BoostBook Subset) ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:15:10/0.0070350170135498/0