![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
SynopsisBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 19. Boost.Lexical_Cast 1.0
|
![]() | Important |
---|---|
Многие компиляторы и библиотеки среды выполнения не могут делать конверсии с использованием новых символов Unicode. Убедитесь, что следующий код компилирует и выводит ненулевые значения, прежде чем использовать новые типы: std::cout << boost::lexical_cast<std::u32string>(1.0).size() << " " << boost::lexical_cast<std::u16string>(1.0).size(); |
Там, где требуется более высокая степень контроля над конверсиями,<std::stringstream
>и<std::wstringstream
>предлагают более подходящий путь. В тех случаях, когда требуются конверсии, не основанные на потоке,<lexical_cast
>является неправильным инструментом для работы и не предназначен для таких сценариев.
class bad_lexical_cast : public std::bad_cast { public: ... // same member function interface as std::exception };
Исключение используется для обозначения сбоя lexical_cast.
boost::lexical_cast
remains the main interface
for lexical conversions. It must be used by default in most cases. However
some developers wish to make their own conversion functions, reusing all
the optimizations of the boost::lexical_cast
.
That's where the boost::conversion::try_lexical_convert
function steps in.
try_lexical_convert
returns
true
if conversion succeeded,
otherwise returns false
. If
conversion failed and false
was returned, state of result
output variable is undefined.
На самом деле<boost::lexical_cast
>реализуется с использованием<try_lexical_convert
>:
template <typename Target, typename Source> inline Target lexical_cast(const Source &arg) { Target result; if (!conversion::try_lexical_convert(arg, result)) throw bad_lexical_cast(); return result; }
try_lexical_convert
relaxes
the CopyConstructible and DefaultConstructible requirements for Target
type. Following requirements for
Target
and Source
remain:
operator<<
>определено, что берет<std::ostream
>или<std::wostream
>объект с левой стороны и экземпляр типа аргумента справа.operator>>
>, который принимает<std::istream
>или<std::wistream
>объект с левой стороны и экземпляр типа результата справа.Статья Synopsis раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 19. Boost.Lexical_Cast 1.0 может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 19. Boost.Lexical_Cast 1.0 ::
реклама |