1

如何在 C++ 中从字符串中删除所有指定的字符?例如,如果我有一个字符串" &New &York ",我想从集合中删除字符,删除{' ','&'}后的字符串将如下所示"NewYork"。我不想编写一个函数来迭代一个字符串并检查字符串中的每个字符是否是不受欢迎的集合的一部分。

4

3 回答 3

4

你可以试试这个:

str.erase(
  std::remove_if(str.begin(), str.end(), [](char chr){ return chr == '&' || chr == ' ';}),
  str.end());
于 2013-01-23T08:43:49.407 回答
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() );
} 
于 2013-01-23T08:49:06.900 回答
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;
}
于 2013-01-23T08:54:08.320 回答