怎样判断一个字符串是否为可以转换为数字

lidengdeng 2011-07-06 05:42:05
老问题了, 怎样判断一个字符串是否为可以转换为数字..

例如: -2003.11 +2003.11 2.444e-18 等等都是转以转化为数字的字符串...

我想调用 atof( pszTerm )看是否出现异常, 如果异常则为非数字

但这个catch exception不知道如何写..

另外, 有其他方法么???
据说正则表达式也可以实现, C++是否支持?? 还是要安装插件的

谢谢
...全文
264 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-07-06
  • 打赏
  • 举报
回复
个人认为这个问题只能由人来解决:(以下每行都能转换为数字)
一百二十三
壹佰贰拾叁
三加一
L在英文字母表中的顺序
ぉ在日文字母表中的顺序
今天是今年的第几天
这个帖子在几楼
……

(^_^)
bsr2009 2011-07-06
  • 打赏
  • 举报
回复
呵呵,正则表达式是个好办法。
至善者善之敌 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tan625747 的回复:]
正则表达式也可以实现, C++是否支持?

boost
C/C++ code

#include <boost/regex.hpp>
using namespace boost;


boost::cmatch what;
regex expression("[\d]*",regex::icase | regex::perl);
if(regex_search((char*……
[/Quote]


++1 ,就用boost库
某某9 2011-07-06
  • 打赏
  • 举报
回复

[-+]?(\d*)\.?\d*([eE][-+]?\d+)?

看这个咋样?
luciferisnotsatan 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hnuqinhuan 的回复:]


atof看看有没有异常
[/Quote]
atof好像不抛异常吧。是设置errno

Each function returns the double value produced by interpreting the input characters as a number. The return value is 0.0 for if the input cannot be converted to a value of that type.

In Visual C++ 2005, in all out-of-range cases, errno is set to ERANGE. If the parameter passed in is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. If execution is allowed to continue, these functions set errno to EINVAL and return 0.
tan625747 2011-07-06
  • 打赏
  • 举报
回复
正则表达式也可以实现, C++是否支持?

boost

#include <boost/regex.hpp>
using namespace boost;


boost::cmatch what;
regex expression("[\d]*",regex::icase | regex::perl);
if(regex_search((char*)m_sHtml.c_str(), what, expression))
{
//数字
}
else
{
//非数字cout<<"Error Input getBody"<<endl;
}
無_1024 2011-07-06
  • 打赏
  • 举报
回复

atof看看有没有异常
jixingzhong 2011-07-06
  • 打赏
  • 举报
回复
atof不会抛出异常,根据转换的结果来分支处理吧。
打开链接下载源码: https://pan.quark.cn/s/847069bb2538 标题中所提及的“EPSON L1118 L1119 L3106 L3108 L3115 L3116废墨清零软件+带教程说明.rar”具体指代的是为爱普生(EPSON)品牌下特定系列打印机量身定制的废墨清零专用程序,该系列打印机型号涵盖了L1118、L1119、L3106、L3108、L3115以及L3116等。 废墨清零作为打印机维护过程中的关键步骤,其核心作用在于处理因打印头清洁周期内累积的废墨所引发的打印机故障报警或工作中断现象。 文件描述部分与标题信息保持一致,进一步明确了该压缩文件内含的是针对上述指定型号打印机的废墨计数器重置工具,并且同步提供了操作教程,旨在辅助用户顺利完成软件应用。 在所标注的标签信息中,诸如“L1118废墨清零”之类的关键词,清晰表明了该软件套件是专门为这些特定型号打印机研发的,其根本目的在于清除设备内部记录的废墨数据,从而恢复打印机的标准作业效能。 在压缩文件内部署的文件清单如下:1. DataServiceLapper.dll:此文件可能扮演着服务管理层的动态链接库角色,主要负责处理打印机的相关数据服务,其中可能集成有废墨计数器重置的核心功能。 2. apdadrv.dll:该文件或许属于打印机驱动程序的构成部分,主要功能在于实现软件与打印机硬件之间的交互通讯,用于下达清零指令。 3. StrGene.dll:此动态链接库可能涉及字符串操作或数据加密的相关功能,其用途可能在于验证软件的合法性或保障数据传输的安全性。 4. Adjprog.exe:此文件极有可能为主控程序,用户需通过执行该可执行文件来启动废墨清零流程。 5. 使用说明.txt:该文本文件提供了软...
内容概要:本文深入解析了pytest自动化测试实战项目在软件行业中的应用,涵盖其核心特性、关键技术与实际应用场景。通过构建一个用户管理微服务的API测试项目,详细展示了如何利用pytest的Fixture机制、参数化测试、插件体系和标记系统实现高效、可维护的自动化测试框架。文章强调模块化设计、数据驱动测试及与持续集成系统的无缝整合,并结合具体代码案例阐述最佳实践,最后展望了AI赋能、云原生适配等未来发展方向。; 适合人群:具备Python基础、从事测试或开发工作的工程师,尤其是希望提升自动化测试能力的测试开发人员、QA工程师及DevOps从业者;适合工作1-3年、有一定实践经验的技术人员。; 使用场景及目标:① 掌握pytest在API测试、UI自动化、微服务集成中的落地方法;② 学习如何通过fixture复用、参数化和分层设计提升测试效率与可维护性;③ 将pytest集成到CI/CD流水线中,实现快速反馈与高质量交付。; 阅读建议:此资源以真实项目为导向,建议读者结合代码结构动手实践,重点理解fixture作用域、数据驱动设计与异常断言策略,并尝试引入pytest-cov、pytest-xdist等插件优化测试流程,在实践中掌握从零搭建企业级测试框架的能力。
源码链接: https://pan.quark.cn/s/69b5c1f90e9a Redis作为一款具备出色性能的键值型数据库,在多种应用场景中,如数据缓存与消息队列处理,得到了广泛的应用。在实际环境中部署时,为了保障服务的持续稳定以及资源的高效利用,常常会选用在后台模式下执行Redis。这种后台执行模式能够确保Redis在不干扰终端操作的前提下运行,从而增强整个系统的适应性。文章标题“redis后台启动redis后台启动”明确指出本主题的核心内容是关于如何在后台环境下来启动Redis服务器。描述部分“redis后台启动命令加对应redis.vbe。修改路径然后直接点击”给出了初步的操作指引,但对于初次接触的用户来说,可能显得不够详尽。接下来将全面阐释Redis后台启动的详细流程,并进一步探讨相关的技术要点。1. Redis后台启动指令: Redis在后台模式下启动通常借助`redis-server`指令并配合`--daemonize yes`参数实现。在命令行输入以下指令: ``` redis-server --daemonize yes ``` 此指令将使Redis以守护进程(daemon)的形式执行,即在后台运行且不占用终端界面。2. 配置文件的调整: 通常情况下,Redis的配置文件命名为`redis.conf`。在文件中找到`daemonize`选项,将其参数值设置为`yes`,随后保存并退出。通过这种方式配置后,每次启动Redis时,都会默认采用后台运行模式。启动命令可以简化为: ``` redis-server ```3. 日志文件的配置: 当Redis以守护进程形式运行时,其日志信息会被重定向至`stdout`和`stderr`。为了便...

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧