これにより、bad_lexical_cast 例外が発生します。
int8_t i = boost::lexical_cast<int8_t>("12");
値が に収まらない場合は例外が必要int8_t
です。
どうすればいいですか?最初に int にキャストし、値が -128 ~ 127 の範囲外の場合は例外をスローする必要がありますか?
文字列を uint8_t に変換することにも興味があります。
これにより、bad_lexical_cast 例外が発生します。
int8_t i = boost::lexical_cast<int8_t>("12");
値が に収まらない場合は例外が必要int8_t
です。
どうすればいいですか?最初に int にキャストし、値が -128 ~ 127 の範囲外の場合は例外をスローする必要がありますか?
文字列を uint8_t に変換することにも興味があります。
Q: int8_t または uint8_t の lexical_cast が期待どおりに動作しないのは何ですか?
A: 上記のように、int8_t と uint8_t は実際には char であり、そのようにフォーマットされていることに注意してください。これを回避するには、最初に整数型にキャストします
ソース:
http://www.boost.org/doc/libs/1_51_0/doc/html/boost_lexical_cast/frequently_asked_questions.html
lexical_cast
int8_t
またはのuint8_t
文字として扱われます。
と組み合わせlexical_cast
て、numeric_cast
必要なものを取得できます。
#include <boost/numeric/conversion/cast.hpp>
#include <boost/lexical_cast.hpp>
using boost::lexical_cast;
using boost::numeric_cast;
numeric_cast<int8_t>(lexical_cast<int>("128"));
numeric_cast<uint8_t>(lexical_cast<int>("256"));