我在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实现相同目的的有效方法?
答案 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::isalnum
和std::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;
}