Возвращает результат потоковой передачи arg в стандартный библиотечный поток на основе строк, а затем в качестве целевого объекта. Там, где Target либо<std::string>, либо<std::wstring>, извлечение потока принимает все содержимое строки, включая пробелы, а не полагается на поведение по умолчанию<operator>>>. В случае неудачного обращения, исключение составляет<bad_lexical_cast>.
Принимает массив<count>символов в качестве входного параметра и передает их в качестве целевого объекта. В случае неудачного обращения<bad_lexical_cast>забрасывается исключение. Этот вызов может быть полезен для обработки ненулевого завершенного массива символов или обработки только некоторой части массива символов.
Требования к аргументу и типам результатов для обеих функций:
Источник является исходным потоком, то есть определяется<operator<<>, который принимает<std::ostream>или<std::wostream>объект с левой стороны и экземпляр типа аргумента справа.
Цель является вводимой, что означает, что определено<operator>>>, который принимает<std::istream>или<std::wistream>объект с левой стороны и экземпляр типа результата справа.
Целевой объект является CopyConstructible [20.1.3].
Цель является конструктивной по умолчанию, что означает возможность инициализации объекта такого типа по умолчанию [8.5, 20.1.4].
Тип символа основного потока предполагается<char>, если только<Source>или<Target>не требует широкохарактерной потоковой передачи, и в этом случае основной поток использует<wchar_t>. Следующие типы также могут использовать<char16_t>или<char32_t>для широкохарактерной потоковой передачи:
Многие компиляторы и библиотеки среды выполнения не могут делать конверсии с использованием новых символов Unicode. Убедитесь, что следующий код компилирует и выводит ненулевые значения, прежде чем использовать новые типы:
Там, где требуется более высокая степень контроля над конверсиями,<std::stringstream>и<std::wstringstream>предлагают более подходящий путь. В тех случаях, когда требуются конверсии, не основанные на потоке,<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>:
try_lexical_convert relaxes
the CopyConstructible and DefaultConstructible requirements for Target type. Following requirements for
Target and Source remain:
Источник должен быть OutputStreamable, что означает, что<operator<<>определено, что берет<std::ostream>или<std::wostream>объект с левой стороны и экземпляр типа аргумента справа.
Цель должна быть InputStreamable, что означает, что определен<operator>>>, который принимает<std::istream>или<std::wistream>объект с левой стороны и экземпляр типа результата справа.
Статья Synopsis раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 19. Boost.Lexical_Cast 1.0 может быть полезна для разработчиков на c++ и boost.