使用递归擦除字符串上的所有非数字

时间:2019-04-08 04:32:34

标签: c++ recursion

我有一项任务是检查字符串中是否包含非数字,然后将其删除。

我在下面尝试了此代码,但它不起作用。有人可以指出我的代码有什么问题吗?

recursiveNAN(string num, int pos)
    {
        char tmp=num[pos];
        if(pos<0)
        {
            this->create(); //allocates memory for the new number
            *this->num = stoi(num); //translate string to number
        }
        if (isdigit(tmp)&&pos>=0)
        {
            this->recursiveNAN(num, pos-1); 
        }
        else if (!isdigit(tmp) && pos>=0)
        {

            num.erase(pos,1);
            this->recursiveNAN(num,pos-1); 
        }
    }

在编译时不会说任何错误,但在调试时会说。

1 个答案:

答案 0 :(得分:1)

这可以使用正则表达式快速完成:

#include <iostream>
#include <string>
#include <regex>


int main()
{
    std::string s("14scds3vkj12");
    std::regex r("\\D+");
    std::cout<<std::stoi(std::regex_replace(s,r,""));
}

输出:

14312