boost::lexical_cast为数值之间的转换(conversion)提供了一揽子方案,比如:将一个字符串"123"转换成整数123,代码如下:
- strings="123";
-
inta=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
-
06usingnamespacestd;
-
07usingnamespaceboost;
- 08
-
09intmain()
- 10{
-
11strings="123";
-
12inta=lexical_cast<int>(s);
-
13doubleb=lexical_cast<double>(s);
- 14
-
15printf("%d\r\n",a+1);
-
16printf("%lf\r\n",b+1);
- 17
-
18try
- 19{
-
20intc=lexical_cast<int>("wrongnumber");
- 21}
-
22catch(bad_lexical_cast&e)
- 23{
-
24printf("%s\r\n",e.what());
- 25}
- 26
-
27return0;28}
如上程序实现字符串"123"到整数、双精度实数的转换(为了防止程序,我们特意让它将值加1),结果输出如图4-19所示。
|
(点击查看大图)图4-19 运行结果 |
光盘导读
该项目对应于光盘中的目录"\ch04\LexicalCastTest"。
===============================
以上摘自《把脉VC++》第4.6.2小节的内容,转载请注明出处。
如果你想与我交流,请点击如下链接加我为好友:http://student.csdn.net/invite.php?u=113292&c=8913f87cffe7d533
分享到:
相关推荐
boost::lexical_cast用法示例,包含数值转字串,字串转数值以及相应的异常处理代码
c++通过boost库实现字符串之间与数字之间的
compiler_lexical_analyzer
使用flex实现的C语言词法分析,在linux和window下都试过,应该不会有问题,内含编译好的exe文件,直接运行可能会报错,需要将编译器地址放入环境变量
boost基本入门使用示例,简单,一看就懂! 部分代码如下: int a = lexical_cast("123"); double b = lexical_cast("123.0123456789"); string s0 = lexical_cast(a);
lexical analysis explained
Realisation d'un analyseur lexical en cpp et deux fichier .h
这是一个词法分析程序.我认为这对你会有帮助
Updated Libraries: Asio, Chrono, Container, Context, Conversion, DateTime, Flyweight, Function, Functional/Factory, Fusion, Geometry, Hash, Interprocess, Intrusive, Lexical Cast, Log, Math, Move, ...
python写一个简易的词法分析器,比上次的代码加上了一个交互界面,此为demo,可以根据这个代码修改成完整的词法分析器。
用MFC实现的C语言词法分析器,是学习编译原理的不错的参考资料,本程序用VS2010编写,此词法分析程序可分析出C语言中: 标识符(以字母或下划线开头,后面可以是数字字母或下划线) 字符串常量 字符常量 整数常量 ...
制作一个简易的编译器,能够对于给出的符合文法规则程序代码能进行词法分析、语法分析、语义分析并最终生成汇编代码。
用C++写的C语言词法分析器,vc6.0开发
葡萄牙语词典 程序的实用程序,需要在摄像机上添加新的文件。 示例: python3 lexical_analysis.py --file "hello world.por
原来我总结过c++的一些类型转换函数:static_cast,...polymorphic_downcast,numeric_cast和lexical_cast。设计的主要原则是:代码必须准确运行而且清晰的表达作者的意图。polynorphic_cast提供更好的类型安全性。在c
编译原理词法分析器;语法分析器LR(1)
Boost.LexicalCast是。 该库适用于常规文字文本转换,例如,以int表示的字符串,反之亦然。 测试结果 @ 建造 测试覆盖率 更多信息 开发分支: 主分支: 执照 根据分发。
经过Python 2.7.3和Tensorflow 1.1测试谈话: : 一般的这是论文《 (NAACL HLT 2018接受)的代码。 分支机构是: 掌握:基线NMT tie_embedding:带绑定嵌入的基线NMT fixnorm:纸上的fixnorm模型fixnorm_lex:纸上...
lexical_syntax_analysis:编译原理词法分析器和语法分析器LR(1)实现C ++
一个词法编译器。功能描述在help.txt中有说明。