sheldon_blogs

C++提取字符串中的整数

代码示例:

复制代码
int ExtractNumber(char* str)
{
    int numberCnt = 0;
    string s = str;
    size_t begin = 0, end = 0;

    if(!str){
        return 0;
    }

    while(end != std::string::npos) //std::string::npos是一个常量,它等于size_t类型可以表示的最大值,用来表示一个不存在的位置,类型一般是std::container_type::size_type。
    {
        begin = s.find_first_of("0123456789", end); //查找并返回第一个出现数字字符(包含于"0123456789")的位置,如果没找到就返回string::nops
        if(begin != std::string::npos) // we found one
        {
            end = s.find_first_not_of("0123456789", begin); //查找并返回第一个不是数字字符的位置
            string num = s.substr(begin, end - begin); //提取两个位置之间的子字符串
            int number = atoi(num.c_str()); //将数字字符串转成整型
            ALOGD("ExtractResolution number : %d\n", number);
            numberCnt++;
        } else {            
            ALOGE("ExtractResolution no number in string: %s\n",s.c_str());            
            break;        
        }
    }
    return numberCnt;
}
复制代码

说明:首先用string::find_first_of("0123456789", end);获取从位置end开始的第一个数字的位置,然后通过string::find_first_not_of("0123456789", begin);获取从位置begin开始第一个不是数字的位置,最后取两个位置之间的子字符串使用atoi转成整型数字。

posted on   sheldon_blogs  阅读(1121)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示