从字符串c ++中删除非字母字符

Hol*_*cer 3 c++ string

我试图从c ++中的输入字符串中删除所有非字母字符,但不知道如何操作.我知道它可能涉及ascii数字,因为这是我们正在学习的内容.我无法弄清楚如何删除它们.我们只学习了循环,还没有启动数组.不知道该怎么办.

如果字符串是Hello 1234 World&*
它将打印HelloWorld

son*_*yao 11

如果您使用std::string和STL,您可以:

string s("Hello 1234 World&*");
s.erase(remove_if(s.begin(), s.end(), [](char c) { return !isalpha(c); } ), s.end());
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/OIsJmb

注意:如果您希望能够处理包含除英语之外的任何语言的文本的字符串,或者程序使用非默认语言环境的文本,则可以使用isalpha(std::locale).

PS:如果使用c样式的字符串char *,可以将其转换为std::string构造函数,并通过其成员函数进行转换c_str().