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

标签 c++ string

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

  1. 它将始终包含一个“*”
  2. 它可以包含多个'*'
  3. 绝不会以“*”开头或结尾

什么是最干净和/或最短的方法来删除最后一个“*”之后的所有内容,加上它本身,只有基本的库?

最佳答案

根据您的假设:

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

不假设它包含至少一个*:

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

关于c++ - 在最后一次出现字符后优雅地删除字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26893340/

相关文章:

c# - 从没有正则表达式的字符串中获取一组数字

C++将字符串传递到管道中以传递给gnuplot

mysql - 按字符串中任何单个单词的开头搜索

c++ - 等待任务在线程池中完成

python - 如何在新行字符上拆分 Python 字符串

Python拆分 ':'字符前的单词但不拆分时间结构

c++ - 在 C++ 中使用带头文件的抽象类

c++ - 有没有办法打破这种对单元测试的依赖?

c++ - 没有默认构造函数时,使用垃圾数据初始化对象

c++ - 有没有更快的方法在 OpenGL 中指定立方体贴图纹理?