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机制数字的转换,可以以如下方式进行:
templatestruct 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进行数值转换的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- Vue.js3.2的vnode部分优化升级使用示例详解
- 白牙精华素怎么用(使用白牙精华素的正确姿势!!!)
- 使用Mybatis如何实现多个控制条件查询
- 远程Service使用的几个坑
- 详解Vue3中setup函数的使用教程
- 阿里云态势感知服务使用教程
- python|python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
- 正确使用|正确使用 iOS 开发中的六大操作手势
- 电气元件的使用|降压模块的使用
- STM32的使用|STM32F4软件IIC的使用