【问题标题】:C++ Remove all non-number charachters from std::string [closed]C ++从std :: string中删除所有非数字字符[关闭]
【发布时间】:2020-04-05 22:30:34
【问题描述】:

什么是删除字符串中不在 0 到 9 范围内的所有字符的有效方法?

string s = "h3ll0";
string numbers = removeNonNumbersFromString(s);
cout << numbers << endl;

输出应该是30

【问题讨论】:

  • 请提供您自己尝试的minimal reproducible example 并将其展示给我们,描述您遇到的问题。
  • 如果你想就地做,你真的不能比擦除删除成语更好。查找并应用您学到的知识。
  • C++ 有很多不错的algorithm functions,包括std::remove_if,这可能是你喜欢的(以及合适的lambda expressionstd::isdigit)。
  • 从未听说过擦除删除成语,它是什么?请参考示例或链接!
  • 如果你搜索它,你会发现很多文章/帖子解释了什么是擦除删除成语。

标签: c++ regex string


【解决方案1】:

这是一个简单的例子,如何使用std::isdigit 和erase-remove idiom(在您的问题的cmets 中提到)来实现它:

std::string s = "h3ll0";

s.erase(std::remove_if(s.begin(), s.end(), [](unsigned char c)
{
    return !std::isdigit(c);
}), s.end());

std::cout << s << std::endl;

【讨论】:

  • 感谢您帮助我解决了我的问题!
猜你喜欢
  • 2014-01-25
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 2014-10-19
相关资源
最近更新 更多