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

lei*_*paC 7 c++ string

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

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

什么是最简洁和/或最短的方法来删除过去的'*'以及仅使用基本库的一切?

Mik*_*our 20

鉴于你的假设:

s.erase(s.rfind('*'));
Run Code Online (Sandbox Code Playgroud)

没有假设它至少包含一个*:

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