删除C ++字符串中的字符

时间:2013-10-28 17:39:39

标签: c++

我在C ++中有以下形式的字符串

   string variable1="This is stackoverflow \"Here we go "1234" \u1234 ABC";

现在在这个字符串中我想删除除字母(从a到b,A到B)和数字之外的所有字符。这样我的输出就变成了

   variable1="This is stackoverflow Here we go 1234 u1234 ABC";

我尝试使用指针检查每个字符,但发现效率非常低。有没有一种使用C ++ / C实现相同目的的有效方法?

2 个答案:

答案 0 :(得分:7)

使用std::remove_if

#include <algorithm>
#include <cctype>

variable1.erase(
    std::remove_if(
        variable1.begin(),
        variable1.end(),
        [] (char c) { return !std::isalnum(c) && !std::isspace(c); }
    ),
    variable1.end()
);

请注意std::isalnumstd::isspace的行为取决于当前的区域设置。

答案 1 :(得分:2)

工作代码示例: 的 http://ideone.com/5jxPR5

bool predicate(char ch)
    {
     return !std::isalnum(ch);
    }

int main() {
    // your code goes here


    std::string str = "This is stackoverflow Here we go1234 1234 ABC";

    str.erase(std::remove_if(str.begin(), str.end(), predicate), str.end());
    cout<<str;
    return 0;
}