c语言字符串保留字母删除数字,如何从c中的字符串中删除所有非字母数字字符?...

编写一个需要char的函数,如果要删除该字符则返回true,如果要保留则返回false:

bool my_predicate(char c);

然后使用std :: remove_if算法从字符串中删除不需要的字符:

std::string s = "my data";

s.erase(std::remove_if(s.begin(), s.end(), my_predicate), s.end());

根据您的要求,您可能可以使用标准库谓词(如std :: isalnum),而不是编写自己的谓词(您说您需要匹配字母数字字符和空格,因此也许这不完全适合你需要什么)

如果要使用标准库std :: isalnum函数,则需要使用一个转换来消除C标准库头文件< cctype>中的std :: isalnum函数之间的歧义。 (这是你想要使用的)和std :: isalnum在C标准库标题< locale> (这不是你想要使用的,除非你要执行区域设置特定的字符串处理):

s.erase(std::remove_if(s.begin(), s.end(), (int(*)(int))std::isalnum), s.end());

这与任何序列容器(包括std :: string,std :: vector和std :: deque)同样好。这个成语通常被称为“擦除/删除”成语。 std :: remove_if算法也可以使用普通数组。 std :: remove_if只对序列进行单次传递,因此具有线性时间复杂度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值