我如何在C ++中删除字符串中的所有指定字符?
例如,如果我有一个字符串" &New &York "
并且我想从集合{' ','&'}
中删除字符,则删除后的字符串将显示为"NewYork"
。
我不想编写一个迭代字符串的函数,并检查字符串中的每个字符,如果它是不需要的集合的一部分。
答案 0 :(得分:3)
你可以试试这个:
str.erase(
std::remove_if(str.begin(), str.end(), [](char chr){ return chr == '&' || chr == ' ';}),
str.end());
答案 1 :(得分:2)
使用此
#include <string>
#include <algorithm>
#include <cctype>
int main()
{
std::string s = "the#qu1ck&br0wn ***fox %%jumped 0ver @@the lazy dog";
s.erase( std::remove_if(s.begin(), s.end(), std::isalnum),
s.end() );
}
答案 2 :(得分:1)
在char数组上执行此操作的最简单,也可能是最简单的方法(您没有真正指定您的“字符串”,所以我假设最简单的类型)将是这样的:
#include <cstring>
void erase(char *str, char *evilchars)
{
char *ptr1 = str;
char *ptr2 = str;
while(*ptr1)
{
*ptr2 = *ptr1;
if(!strchr(evilchars, *ptr1))
++ptr2;
++ptr1;
}
*ptr2 = 0;
}