C++ 删除C+;中字符串中的数字并保留下划线+;

C++ 删除C+;中字符串中的数字并保留下划线+;,c++,string,c++-standard-library,C++,String,C++ Standard Library,我有这段代码,但它输出 Hello World不带下划线。如果我想输出Hello\u World,我该怎么做 string s = "Hello_World 1 2"; s.erase(remove_if(s.begin(), s.end(), [](char c) { return !isalpha(c); } ), s.end()); 您可以通过向std::remove_if函数添加另一个条件来实现特定的输出 std::string s = "Hello_World 1 2"; s.era

我有这段代码,但它输出
Hello World
不带下划线。如果我想输出
Hello\u World
,我该怎么做

string s = "Hello_World 1 2";
s.erase(remove_if(s.begin(), s.end(), [](char c) { return !isalpha(c); } ), s.end());

您可以通过向
std::remove_if
函数添加另一个条件来实现特定的输出

std::string s = "Hello_World 1 2";
s.erase( std::remove_if(s.begin(), s.end(),  [](char c) 
                       { 
                           return !isalpha(c) && c != '_';
                       }), 
                       s.end());
std::cout << s;
std::string s=“Hello_World 1 2”;
s、 擦除(std::remove_if(s.begin(),s.end(),[])(字符c)
{ 
return!isalpha(c)&&c!='';
}), 
s、 end());

std::不能首先明确说明要保留哪些字符,然后将该描述转换为代码。你已经走到一半了。
回来!伊萨尔法(c)和&c!='u'?其中包含lambda函数。了解lambda函数是什么,它的语法是什么,您将能够自己完成它。(虽然这些不是初学者学习的最佳选择,但您应该始终尝试理解您在任何情况下都可以使用的方法。)再次相关: