在最后一次出现字符后优雅地删除字符串的一部分

时间:2014-11-12 17:52:24

标签: c++ string

假设我想删除最后一个' *'之后的所有内容。 (例如)在一个字符串中。知道我可以认为以下字符串是理所当然的:

  1. 它总是包含' *'
  2. 它可能包含多个' *'
  3. 绝不会以' *'
  4. 开头或结尾

    使用基本库删除最后一个' *'及其自身以外的所有内容的最简洁和/或最短的方法是什么?

1 个答案:

答案 0 :(得分:19)

鉴于你的假设:

s.erase(s.rfind('*'));

不假设它至少包含一个*

auto pos = s.rfind('*');
if (pos != std::string::npos) {
    s.erase(pos);
}