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 に答える