Стирание всех не чисел в строке с помощью рекурсии - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть задача проверить строку, если она содержит не числа, а затем удалить ее.

Я попробовал этот код ниже, и он не работает. Может ли кто-нибудь указать, что не так с моим кодом?

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 Ответ

1 голос
/ 08 апреля 2019

Это можно быстро сделать с помощью регулярных выражений:

#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
...