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

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

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

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

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

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

谢谢
...全文
263 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/25f2ee1914c3 ### SQL日期格式化指南#### 一、引言在数据库管理过程中,经常需要将存储的日期数据按照特定的格式进行展示或处理。SQL Server平台内置了`CONVERT`函数,该函数能够支持将日期数据转换成用户指定的字符串格式。通过设定不同的样式参数(style),可以生成多样化的日期时间字符串表现形式。#### 二、日期格式化规范在SQL Server数据库系统中,`CONVERT`函数允许传入一个整数值作为参数,用以定义日期格式化的具体样式。以下列举了部分常用的样式规范及其对应的日期时间格式展示:1. **样式 0**:`MMDDYYhhmmSS`(例如:`0516200610:57AM`) - 此种格式用于同时呈现月份、日份、两位数的年份、12小时制的小时数、分钟数以及秒数。2. **样式 1**:`MM/DD/YY`(例如:`05/16/06`) - 该格式展示月份、日份以及两位数的年份。3. **样式 2**:`DD.MM.YY`(例如:`06.05.16`) - 此格式用于显示日份、月份和两位数的年份。4. **样式 3**:`DD/MM/YY`(例如:`16/05/06`) - 与样式 3 类似,同样是日份、月份和两位数的年份,但使用斜杠作为分隔符。5. **样式 4**:`DD.MM.YY`(例如:`16.05.06`) - 此格式与样式 2 相同。6. **样式 5**:`DD-MM-YY`(例如:`16-05-06`) - 采用短横线作为日期各部分之间的分隔标记。7. **样式 6**:`DDMMYY`(例如:`160506`) - 此格式不包含任何分隔符的...

65,210

社区成员

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

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