匹配模式删除字符

C++:
匹配模式删除字符

How to (如何操作)

#include <iostream>
#include <string>
#include <algorithm>

int main() {
    std::string str = "C++11 is cool, but C++20 is cooler!";
    str.erase(std::remove_if(str.begin(), str.end(), [](char c) { 
        return !isalpha(c) && !isspace(c); 
    }), str.end());
    
    std::cout << str << std::endl; // Output will be: "C is cool but C is cooler"
}

Deep Dive (深入了解)

删除字符模式这个概念在字符串处理中是一个基础且强大的工具。这种做法可以追溯到早期的编程。C++在 <algorithm> 库提供了remove_if函数,配合 lambda 表达式和其他函数,比如 isalphaisspace,来实现复杂的删除模式。替代方法包括正则表达式,但对小型或简单任务来说可能过于复杂。关于实现细节,remove_if并不真正删除元素,而是将不需要删除的元素复制到容器开始的位置,然后返回新的逻辑尾端。使用erase来真正删除剩余元素是必要的。

See Also (另请参阅)