我有一个像“Hello world 1 2 3”这样的字符串,我希望得到一个像“Hello World”这样的字符串。你知道它的任何功能吗?
答案 0 :(得分:3)
作为第一个近似值,假设您希望删除所有数字并将结果放入新字符串中,我将从以下内容开始:
std::remove_copy_if(your_string.begin(), your_string.end(),
std::back_inserter(new_string),
[](unsigned char ch) { return isdigit(ch); });
答案 1 :(得分:1)
删除字符串
中的所有数字string x
x.erase(
std::remove_if(x.begin(), x.end(), &isdigit),
x.end());
答案 2 :(得分:0)
这通常使用std::ctype<char>
构面来分类字母数字,包括空白字符:
#include <locale>
#include <functional>
template <class charT = char>
bool digit_removal(charT c, std::locale loc)
{
return std::use_facet<std::ctype<charT>>(loc).is(
std::ctype_base::digit, c);
}
int main()
{
std::string var = "Hello 123";
var.erase(
std::remove_if(var.begin(), var.end(),
std::bind(&digit_removal<char>, std::placeholders::_1, std::locale())),
var.end());
std::cout << var; // "Hello "
}