C++使用boost::lexical_cast进行数值转换

这篇文章介绍了C++使用boost::lexical_cast进行数值转换的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

在STL库中,我们可以通过stringstream来实现字符串和数字间的转换:

    int i = 0; stringstream ss; ss << "123"; ss >> i;

但stringstream是没有错误检查的功能,例如对如如下代码,会将i给赋值为12.

    ss << "12.3"; ss >> i;

甚至连这样的代码都能正常运行:

    ss << "hello world"; ss >> i;

这显然不是我们所想要看到的。为了解决这一问题,可以通过boost::lexical_cast来实现数值转换:

    int i = boost::lexical_cast("123"); double d = boost::lexical_cast("12.3");

对于非法的转换,则会抛异常:

    try { int i = boost::lexical_cast("12.3"); } catch (boost::bad_lexical_cast& e) { cout << e.what() << endl; }

对于16机制数字的转换,可以以如下方式进行:

    template  struct HexTo { ElemT value; operator ElemT() const {return value;} friend std::istream& operator>>(std::istream& in, HexTo& out) { in >> std::hex >> out.value; return in; } }; int main(void) { int x = boost::lexical_cast>("0x10"); }

到此这篇关于C++使用boost::lexical_cast进行数值转换的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持0133技术站。

以上就是C++使用boost::lexical_cast进行数值转换的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言