从字符串中删除字符集

Remove set of characters from the string

本文关键字:字符集 删除 字符串      更新时间:2023-10-16
如何在

C++中删除字符串中的所有指定字符?例如,如果我有一个字符串" &New &York "并且我想从设置{' ','&'}中删除字符,则删除后的字符串将看起来像"NewYork"。我宁愿不编写一个函数来迭代一个字符串并检查字符串中的每个字符是否是不需要的集合的一部分。

你可以试试这个:

str.erase(
  std::remove_if(str.begin(), str.end(), [](char chr){ return chr == '&' || chr == ' ';}),
  str.end());

使用这个

#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() );
} 

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;
}