首页 > 代码库 > boost::lexical_cast
boost::lexical_cast
boost::lexical_cast为数值之间的转换(conversion)提供了一揽子方案,比如:将一个字符串"123"转换成整数123,代码如下: string s = "123"; int a = lexical_cast<int>(s); 这种方法非常简单,笔者强烈建议大家忘掉std诸多的函数,直接使用boost:: lexical_cast。如果转换发生了意外,lexical_cast会抛出一个bad_lexical_cast异常,因此程序中需要对其进行捕捉。 现在动手 编写如下程序,体验如何使用boost:: lexical_cast完成数值转换。 【程序 4-11】使用boost:: lexical_cast完成对象数值转换 01 #include "stdafx.h" 02 03 #include <iostream> 04 #include <boost/lexical_cast.hpp> 05 06 using namespace std; 07 using namespace boost; 08 09 int main() 10 { 11 string s = "123"; 12 int a = lexical_cast<int>(s); 13 double b = lexical_cast<double>(s); 14 15 printf("%d/r/n", a + 1); 16 printf("%lf/r/n", b + 1); 17 18 try 19 { 20 int c = lexical_cast<int>("wrong number"); 21 } 22 catch(bad_lexical_cast & e) 23 { 24 printf("%s/r/n", e.what()); 25 } 26 27 return 0;28 } 如上程序实现字符串"123"到整数、双精度实数的转换(为了防止程序作弊,我们特意让它将值加1),结果输出如图4-19所示。
有了这个还用个毛atoi,itoa。
还有一种方法有std::stringstream也行,用流进行转换。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。