改天记得把自己那个代码中的改成这个boost::lexical_cast
2015-08-12 10:38
218 查看
c++数据类型万能转换器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所示。
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所示。
(点击查看大图)图4-19 运行结果 |
相关文章推荐
- CodeForces 568A. Primes or Palindromes?( 素数 + 回文数 )
- 《Java实战开发经典》第四章4.7
- java corba data type
- 《Java实战开发经典》第四章4.6
- 《Java实战开发经典》第四章4.5
- c++ 编程 几个有用的宏
- JNA:JAVA调用DLL 超详细代码实战
- 8行代码教你搞定导航控制器全屏滑动返回效果
- C++ Primer快速入门之七:运算符
- 深入理解Java国际化
- java并发笔记之自旋锁、排队自旋锁、MCS队列锁、CLH队列锁
- SpringMVC+Spring3+Mybatis3
- C++ Socket C/S ,实现客户端,服务器端断开重连
- javafx HTMLEditor
- C语言实现将数字颠倒
- Java中接口里定义的成员变量
- 详细解读PHP中接口的应用
- Evaluate Reverse Polish Notation
- PHP将二进制文件存入数据库以及从数据库中读取二进制文件
- c#socket同步通信