好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
怎么用c++确定一个字符串是否为数字? 关闭 返回上一级  

怎么用c++确定一个字符串是否为数字?
+ 查看更多

发布日期:2018-02-26 10:51
分类:CPlusPlus
浏览次数:119
我尝试过写一个用来检测一个字符串是否为数字的函数,用在我的游戏中来确定正在读取的文件中某一行是否为一个参数。我写了以下的函数,我相信它可以顺利的实现效果,要不就是我不小心更改了它或者Windows或者我本身有什么问题。
bool isParam(string line){
    if(isdigit(atoi(line.c_str()))) return true;
    return false;
}

回答

最有效的方法是对字符串进行迭代,直到找到一个非数字字符,如果有任何一个非数字字符就可以确定这不是是一个数字字符串
bool is_number(const std::string& s)
{
    std::string::const_iterator it = s.begin();
    while (it != s.end() && std::isdigit(*it)) ++it;
    return !s.empty() && it == s.end();
}
或者你可以用C++ 11的方式:
bool is_number(const std::string& s)
{
    return !s.empty() && std::find_if(s.begin(), 
        s.end(), [](char c) { return !std::isdigit(c); }) == s.end();
}
以上方法仅适于检测正整数,如果要检测负整数或者分数,你应该使用基于库的方案,虽然增加对负整数的支持是微不足道的(只需‘-’检测)。
上一篇在C++中使用Boost生成UUID的例子
报错信息:libstdc++.so.6: cannot open shared object file: No such file or directory下一篇
下一篇报错信息:libstdc++.so.6: cannot open shared object file: No such file or directory

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2017  苏州卡达网络科技有限公司 好问 GOODQ.TOP 备案号:苏ICP备09008221号-5