我有一项任务是检查字符串中是否包含非数字,然后将其删除。
我在下面尝试了此代码,但它不起作用。有人可以指出我的代码有什么问题吗?
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);
}
}
在编译时不会说任何错误,但在调试时会说。
答案 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